leecode学习笔记
喜欢历史的工科生
这个作者很懒,什么都没留下…
展开
-
leecode-学习笔记
股票问题原创 2022-07-04 13:34:04 · 348 阅读 · 0 评论 -
leecode学习笔记-机器人走到终点的最短路径
机器人迷宫原创 2022-06-23 22:28:48 · 572 阅读 · 0 评论 -
割舍绳子/整数分割
割绳子原创 2022-06-09 22:35:24 · 67 阅读 · 0 评论 -
leecode学习笔记-括号问题
多个括号的判定这种需要所有括号都入栈。先判断栈是否是空,后是非空情况。class Solution { public boolean isValid(String s) { Deque<Character> stack = new LinkedList<>(); for (int i = 0; i < s.length(); i++) { if (stack.isEmpty()) { .原创 2022-06-05 11:21:04 · 104 阅读 · 0 评论 -
leecode学习笔记模拟
反转字符串2这道题用到了双指针(反转字符串的双指针),但是主要难点在模拟class Solution { public String reverseStr(String s, int k) { char[] chars = s.toCharArray(); for (int i = 0; i < s.length(); i += 2 * k) { if (i + k > s.length()) { .原创 2022-06-05 11:20:30 · 81 阅读 · 0 评论 -
leecode学习笔记-回溯的去重(组合排列问题)
回溯可以看成是一个树的结构,for循环是树层(即树的宽度遍历),递归函数是进行树枝(即树的深度遍历)。如果给的数组有重复的数据,那么就会涉及到去重。树层去重代码:为了防止结果上同一个位置的值相同,这样可能会造成相同的结果[[1,1],[1,1]] if (i > 0 && candidates[i] == candidates[i - 1] && used[i - 1] == false) {//事先需要对数组进行排序 continue;原创 2022-05-24 19:57:37 · 214 阅读 · 0 评论 -
leecode学习笔记-建树/序列化树
创建二叉树的代码https://www.programmercarl.com/%E5%89%8D%E5%BA%8F/ACM%E6%A8%A1%E5%BC%8F%E5%A6%82%E4%BD%95%E6%9E%84%E5%BB%BA%E4%BA%8C%E5%8F%89%E6%A0%91.html// 根据数组构造二叉树TreeNode* construct_binary_tree(const vector<int>& vec) { vector<TreeNode*>原创 2022-05-24 19:00:24 · 106 阅读 · 0 评论 -
leecode做题笔记-两个字符串相互比较动态题的写法
这种题为了方便,dp[i][j] 往往表示 s1[0: i - 1] 和 s2[0 : j - 1]的比较情况。编辑距离class Solution { public int minDistance(String word1, String word2) { int[][] dp = new int[word1.length() + 1][word2.length() + 1]; for (int i = 0; i < word1.leng原创 2022-05-20 22:56:28 · 96 阅读 · 0 评论 -
leecode做题笔记-旋转数组问题
岛屿数量class Solution { public int numIslands(char[][] grid) { int count = 0; for (int i = 0; i < grid.length; i++) { for (int j = 0; j < grid[0].length; j++) { if (grid[i][j] == '1') {原创 2022-05-19 18:41:43 · 61 阅读 · 0 评论 -
二分查找做题心得
二分查找二分查找是一种思想,双指针是实现的“工具”。二分法有以下几种情况1. 有序无重复模板用于有序,无重复数组class Solution { public int search(int[] nums, int target) { if (target < nums[0] || target > nums[nums.length - 1]) { return -1; } int left = 0;原创 2022-04-07 00:30:31 · 232 阅读 · 0 评论 -
快排题总结
快排模板class Solution { public int[] sortArray(int[] nums) { recurCompare(nums, 0, nums.length - 1); return nums; } void recurCompare(int[] nums, int left, int right) { if (left >= right) { retu.原创 2022-04-05 10:53:35 · 132 阅读 · 0 评论 -
栈和队列题型
模拟栈和队列232.用栈实现队列class MyQueue { Deque<Integer> stack1; Deque<Integer> stack2; public MyQueue() { stack1 = new LinkedList<>(); stack2 = new LinkedList<>(); } /* 压栈没有空栈的情况 */ pub原创 2022-03-26 19:48:51 · 314 阅读 · 0 评论 -
KMP题记录
重复的子字符串class Solution { public boolean repeatedSubstringPattern(String s) { if (s.length() == 0) { return false; } int[] next = new int[s.length()]; getNext(next, s); int len = s.length(); ...原创 2022-03-26 19:48:03 · 194 阅读 · 0 评论 -
哈希表类型记录
仅含有小写字母的哈希题仅含有小写字母的哈希题时,可以采用数组的hash表结构有效字母的异位词class Solution { public boolean isAnagram(String s, String t) { int[] hash = new int[26]; for (int i = 0; i < t.length(); i++) { hash[t.charAt(i) - 'a']++; }原创 2022-03-16 22:21:16 · 311 阅读 · 0 评论 -
双指针类题型记录
快慢指针两个指针从一个方向出发。数组移除【符合某个特点的元素】利用快慢指针,通常用于在原地修改数组的情况移除指定元素class Solution { public int removeElement(int[] nums, int val) { int slowIndex = 0; for (int fastIndex = 0; fastIndex < nums.length; fastIndex++) { if (val !=原创 2022-03-13 20:17:15 · 817 阅读 · 0 评论