
Java
TIMELIMITE
Time is not enough. I must hurry up !
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Leetcode 460 LFU缓存机制(最低频次最少使用)
LFU缓存机制,比LRU缓存更加复杂,具体为当需要移除key时,需要删除频次最低的key,而当频次最低key有多个时,删除最久未使用的key,原创 2022-07-03 01:27:11 · 373 阅读 · 0 评论 -
Leetcode 380 随机获取的数据结构
使用数组+hashmap,O(1) 获取数据,O(1) 删除数据原创 2022-07-02 23:12:20 · 227 阅读 · 0 评论 -
Leetcode 703 数据流中的第k大元素 堆
数据流中的第k大元素 使用堆原创 2022-07-02 20:51:40 · 160 阅读 · 0 评论 -
LeetCode 23 合并k个排序链表 优先队列堆优化
优先队列堆优化原创 2022-07-02 19:35:07 · 329 阅读 · 0 评论 -
LeetCode 51 N皇后 回溯
n皇后回溯法原创 2022-07-01 15:52:58 · 336 阅读 · 0 评论 -
1202. 交换字符串中的元素 并查集+排序
// 将同一个联通部分的字符拿出来, sort下// 然后逐个填入....class Solution { private int[] father; public int find(int x) { if (x == father[x]) return x; return father[x] = find(father[x]); } public void union(int u, int v) { .原创 2022-04-27 17:21:18 · 211 阅读 · 0 评论 -
316 & 1081. 去除重复字母 (单调栈)
// 如果不需要保持原有顺序的话,直接一个set就行了// 但需要保存顺序就是用单调栈了// 栈中元素单调, 每来一个字符c, // 判断是否栈中存在, 存在直接pass// 不存在, 就与栈中字符比较, 如果栈顶字符比c大,并且后续仍会出现// 就将栈顶元素弹出, 更新标记// 最后栈中所有字符就是最终答案, 逆序输出即可class Solution { public String smallestSubsequence(String s) { ArrayDequ.原创 2022-04-27 14:41:59 · 179 阅读 · 0 评论 -
1541. 平衡括号字符串的最少插入次数 栈
// "(" 进栈// "))" 两种情况: 栈为空, 添加一个'('计数+1 不为空直接弹出// ")" 两种情况:// 栈为空, 所以必须加个"()" 计数+2// 栈不为空, 必须加个')' 计数+1// 最后统计栈中'('的数量class Solution { public boolean match(char a, char b) { if (a == '(' && b == ')') return true; .原创 2022-04-27 12:08:01 · 163 阅读 · 0 评论 -
921. 使括号有效的最少添加 栈
栈的使用原创 2022-04-27 11:48:22 · 183 阅读 · 0 评论 -
leetcode 92 反转链表 II O(n)
// 从前往后遍历, 保留left前一个节点pre位置, 保留right后一个节点的位置q// 同时保留lef所在的位置rTail, 保留right所在位置p// 翻转left到right的链表// 把p接到pre后面,把q接到rTail后面// 特判pre是否为null, 此时head可能是q的位置// 细节特别多// 完事儿class Solution { public int n; public ListNode reverseBetween(ListNode h.原创 2022-04-17 16:27:04 · 430 阅读 · 0 评论 -
LeetCode 56 合并区间
// LeetCode 56 合并区间// 二维排序,依次取出区间进行比较,O(nlogn))复杂度class Solution { public int[][] merge(int[][] intervals) { int n = intervals.length; if (n == 0) return new int[0][0]; ...原创 2019-08-23 16:31:33 · 212 阅读 · 0 评论 -
LeetCode 59 螺旋矩阵II
// LeetCode 59 螺旋矩阵II// 分情况套路,比n*m的简单,注意奇偶class Solution { public int[][] generateMatrix(int n) { int[][] res = new int[n][n]; int k = 0; int count = 1; while(...原创 2019-08-24 15:13:46 · 309 阅读 · 0 评论 -
LeetCode 62 不同路径
// 经典dp, dp[i][j] = dp[i - 1][j] + dp[i][j - 1];// 注意边界 dp[1][1..n] = dp[1...n][1] = 1;// 因为只能向右和向下走// 但是数据应该没这么强,试了下100,100都超long了...class Solution { public int uniquePaths(int m, int n) ...原创 2019-08-24 15:55:44 · 185 阅读 · 0 评论 -
LeetCode 63 不同路径II
// 跟62差不多 https://blog.youkuaiyun.com/TIMELIMITE/article/details/100053683// 就是对当前格子判断下,初始化的时候横竖碰到1就不能走了class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int n = ...原创 2019-08-24 16:18:04 · 174 阅读 · 0 评论 -
LeetCode 64 最小路径和
// dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + dp[i][j];// 注意初始化横竖累和class Solution { public int minPathSum(int[][] grid) { int n = grid.length; int m = grid[0].length; ...原创 2019-08-24 16:33:31 · 273 阅读 · 0 评论 -
LeetCode 66 加一
// 简易版的大数加法模拟class Solution { public int[] plusOne(int[] digits) { int c = 1; int n = digits.length; int temp; for (int i = n - 1; i >= 0 ;i --){ ...原创 2019-08-24 16:59:09 · 203 阅读 · 0 评论 -
LeetCode 48 翻转图像 水题
// LeetCode 48 翻转图像// 先转置然后再垂直翻转class Solution { public void rotate(int[][] matrix) { int n = matrix.length; int temp = 0; for (int i = 0;i < n;i ++){ fo...原创 2019-08-20 22:19:00 · 313 阅读 · 0 评论 -
LeetCode 74 搜索二维矩阵
// 二分,当成一维数组,下标转换class Solution { public boolean searchMatrix(int[][] matrix, int target) { int n = matrix.length; if (n == 0) return false; int m = matrix[0].length; ...原创 2019-08-25 12:19:54 · 273 阅读 · 0 评论 -
LeetCode 75 颜色分类 荷兰国旗问题
// 双下标,begin和end表示中间白色的开始和末尾.再对每个元素进行遍历,// 设为current.分情况讨论:// 当前是红色: 需要跟begin位置进行交换,begin++, current++;// 当前是白色: 保持不变,current++;// 当前是蓝色: 与end位置进行交换,end--,但此时current可能是0, 1, 2,所以保持不变// 开始想错了,三个...原创 2019-08-25 14:38:47 · 316 阅读 · 0 评论 -
LeetCode 78 子集
// 二进制枚举class Solution { public List<List<Integer>> subsets(int[] nums) { int n = nums.length; List<List<Integer>> res = new ArrayList<>(); ...原创 2019-08-25 15:00:24 · 275 阅读 · 0 评论 -
LeetCode 79 单词搜索
// 记录起点,然后dfsclass Solution { int[] dx = {-1 , 0, 1, 0}; int[] dy = {0, 1, 0, -1}; int n; int m; boolean[][] vis; public boolean exist(char[][] board, String word) { ...原创 2019-08-25 18:43:24 · 260 阅读 · 0 评论 -
LeetCode 80 删除排序数组中的重复项 II
// 记下重复的第二次class Solution { public int removeDuplicates(int[] nums) { int n = nums.length; if (n == 0) return 0; int count = 0; boolean flag = false; in...原创 2019-08-25 19:09:25 · 195 阅读 · 0 评论 -
LeetCode 81 搜索旋转排序数组 II
// 找出旋转点,二分class Solution { public boolean search(int[] nums, int target) { int sep = -1; int n = nums.length; for (int i = 0;i < n - 1; i++){ if (nums[i]...原创 2019-08-25 19:22:50 · 301 阅读 · 0 评论 -
LeetCode 54 螺旋矩阵
// LeetCode 54 螺旋矩阵// 分情况讨论,注意终止条件,奇偶统一,用上取整class Solution { public List<Integer> spiralOrder(int[][] matrix) { if (matrix.length == 0) return new ArrayList<>(); Li...原创 2019-08-22 20:29:40 · 319 阅读 · 0 评论 -
LeetCode 55 跳跃游戏
// LeetCode 55 跳跃游戏// 贪心地每次走最远class Solution { public boolean canJump(int[] nums) { int currentEnd = 0; int currentFar = 0; boolean res = false; for (int i =...原创 2019-08-22 20:47:15 · 367 阅读 · 0 评论 -
LeetCode 18 四数之和
// 四数就是在三数的基础上多加一重循环// 注意输入可能为空class Solution { public List<List<Integer>> fourSum(int[] nums, int target) { if (nums == null || nums.length == 0) return new Ar...原创 2019-04-17 19:55:37 · 170 阅读 · 0 评论 -
LeetCode43 字符串相乘 大数乘法
// 大数乘法,顺位模拟, 注意i和j位乘积结果放在了i + j - 1中,然后从后往前依次处理进位class Solution { public String multiply(String num1, String num2){ if (num1 == "" || num2 == "") return ""; int n = num1.leng...原创 2019-05-07 20:41:30 · 323 阅读 · 0 评论 -
LeetCode 42 接雨水
// 找到最高的,分别从两边逼近...class Solution { public int trap(int[] height){ if (height.length <= 2) return 0; int index = 0; int max = 0; for (int i = 0;i...原创 2019-05-07 20:05:49 · 177 阅读 · 0 评论 -
LeetCode 41 缺失的第一个正数
// 一开始也是没想到,评论区大牛多// 想了一下,也很直接,利用基数排序的道理,将nums[i]放在其该放置的位置上// 例如: 1 2 0 正确的位置应该是 0 1 2,这样最后顺着数看缺哪个就是答案了// 注意常数空间,同时注意不要陷入死循环// 比如 2 2 2 2 2 需要判断当前i的位置是否不需要交换class Solution { public int fi...原创 2019-05-07 19:46:24 · 249 阅读 · 0 评论 -
LeetCode 23 合并K个排序链表
// 解法一: 采用归并的思路,两两合并// 解法二:小子只是想熟悉Java优先队列使用方法,但提交报错class Solution { public ListNode mergeKLists(ListNode[] lists) { if (lists == null) return null; if (lists.leng...原创 2019-04-18 20:57:05 · 268 阅读 · 0 评论 -
LeetCode 22 括号生成
// 简单递归,因为右括号个数只能比左括号剩余个树多才能放置// 换句话说,先放了多少个左括号,就可以放置多少个右括号class Solution { public List<String> res = new ArrayList<>(); public List<String> generateParenthesis(int n) {...原创 2019-04-18 19:18:38 · 263 阅读 · 0 评论 -
LeetCode 10 正则表达式匹配 二维dp
// 这题能知道状态是怎么定义:// 常规套路 dp[i][j] 表示s串前[0,i]与p串前[0,j]匹配结果// 但状态不知如何跳转:// 但有一种跳转一定知道, 那就是当 s[i] == p[j] 时即:// s[i] == p[j] || p[j] == '.' 时, 毫无疑问// dp[i][j] == dp[i - 1][j - 1]// 当s[i] != p[j]时 ...原创 2019-04-22 20:36:24 · 308 阅读 · 0 评论 -
LeetCode 21 合并两个有序链表
// 由于都是有序链表,双指针,哪个小就取哪个// 注意输入有空的情况class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode res = null; if (l1 == null) return l2; if (l2 ==...原创 2019-04-17 21:31:47 · 161 阅读 · 0 评论 -
// LeetCode 20 有效的括号 栈
// 经典栈的应用// 左括号,直接入栈,右括号判断是否匹配,最后// 判断栈是否为空,为空就表示合法,否则非法// 注意题目中提到了空串也合法class Solution { public boolean isValid(String s) { if (s == null || s.length() == 0) return true;...原创 2019-04-17 21:12:22 · 176 阅读 · 0 评论 -
LeetCode 19 删除链表倒数第N个节点
// 方法一: 数有多少个节点,得到正着数的编号,共需两遍遍历// 方法二: 双指针,first先走N步,然后second随着first一起走,知道first走到末尾,// 删掉second后面的节点即可,只需一遍遍历class Solution { // 方法一 public ListNode removeNthFromEnd(ListNode head,...原创 2019-04-17 20:51:10 · 144 阅读 · 0 评论 -
LeetCode 17 电话号码的字母组合 简单递归
// 用map将数字字母与字符串进行映射,然后深搜// 注意,有输入为空 class Solution { public List<String> res = new ArrayList<>(); HashMap<Character, String> map = new HashMap<>(); public List...原创 2019-04-17 19:28:46 · 291 阅读 · 0 评论 -
LeetCode 16 最接近的三数之和
// 跟之前15题3Sum类似,也是双指针,只不过这里是取最小的差值// 还是先sort一遍,从小到大开始,left表示第二个数,right表// 示第三个数,将三数之和与target差值作为优化目标,取最小值// 即得到答案class Solution { public int threeSumClosest(int[] nums, int target){ ...原创 2019-04-16 21:34:04 · 284 阅读 · 0 评论 -
LeetCode 15 3Sum
// LeetCode 15 3sum// 开始理解错题意,以为三元组数组不能相同,导致不必要的浪费时间// 之后反应过来,之前看过解法,觉得挺简单,真正上手的时候发现太多// 细节,例如如果有重复是因为从重复的数字又遍历了一遍,比如样例的// -1,-1,太久没敲代码,生疏太多,哎...加油吧class Solution { public List<List&...原创 2019-04-16 20:57:09 · 192 阅读 · 0 评论 -
LeetCode 29 两数相除
// 类似二进制分解吧,每次找最靠近2^k * devisor,然后减去class Solution { public int divide(int divident, int divisor){ if (divisor == 0) return 0; if (divisor == 1) return divident; if (...原创 2019-04-20 20:51:09 · 219 阅读 · 0 评论 -
LeetCode 28 实现strStr() 字符串匹配KMP
// N*M算法// KMP算法,这里是学习刘汝佳大神书上的代码class Solution { // public int strStr(String haystack, String needle){ // if (needle == null || needle.length() == 0) return 0; // if (hays...原创 2019-04-20 17:10:37 · 270 阅读 · 0 评论