LeetCode
ks_zhe
Thread.sleep();
展开
-
day45 动态规划 | 70,322,279
完全背包,计算总量(需要考虑顺序 先遍历背包再遍历物品)完全背包,求最小的数量。无需考虑顺序,内外层遍历顺序随机。70. 爬楼梯 (进阶)先将dp[i]置为Max。同322。原创 2023-05-19 08:37:33 · 156 阅读 · 0 评论 -
day42 动态规划 | 01背包,43
转换为 背包重量为 sum /2,物品价值为num[i]的01背包问题解决。01背包问题,你该了解这些!416. 分割等和子集。原创 2023-05-16 13:44:42 · 98 阅读 · 0 评论 -
day41 动态规划 | 343,96
96.不同的二叉搜索树。原创 2023-05-15 08:14:55 · 125 阅读 · 0 评论 -
day39 动态规划 | 62,63
机器人每次只可以向右 或者 向下 (每次向右走 )* i的范围 [0,m - 1]* j的范围 [0,n - 1]63. 不同路径 II。解法同上,需要考虑障碍物。原创 2023-05-13 19:52:43 · 226 阅读 · 0 评论 -
day37 贪心 | 56,738
先按照左边界进行排序,然后判断右边界是否重叠,更新区间。738.单调递增的数字。原创 2023-05-11 08:23:35 · 73 阅读 · 0 评论 -
day35 贪心 | 860,406,452
先按照身高进行高到低排序,再按照位次插入即可。如果重叠了直接count++;452. 用最少数量的箭引爆气球。按照客户给的钱进行不同的找钱策略。406.根据身高重建队列。如果不重叠更新最小的右边界。先按照左边界进行排序。原创 2023-05-09 08:34:20 · 82 阅读 · 0 评论 -
day34 贪心 | 1005,134,135
按照一定的策略,先绝对值排序,再负数修正,最后对绝对值最小的数进行替换,再求和。判断是否可以从i 到达i + 1。1005.K次取反后最大化的数组和。采用两次遍历计算糖果数。判断gas总量是否大于cost。原创 2023-05-08 08:34:47 · 63 阅读 · 0 评论 -
day31 贪心 | 455,376,53
LeetCode 53 最大子序和 (求和,如果当发现sum < 0时,直接放弃本次操作,置0【贪心策略】)* LeetCode455 分发饼干 (优先将小饼干给胃口小的即可)* LeetCode376 摆动序列 (统计正负摆动序列的个数)原创 2023-05-05 08:23:44 · 81 阅读 · 0 评论 -
day28 回溯 | 93,78,90
收集每个树的节点 + 树层去重。收集每个树的节点。判断一个分割的值是否有效。回溯需要去掉 '.'原创 2023-05-02 11:05:07 · 84 阅读 · 0 评论 -
day28 回溯 | 39,40,131
数字可以被无限制选取,但是无需考虑顺序(组合),因此递归还是需要考虑startIdx,但是每次都从最开始进行回溯,而不是startIdx + 1。每次找到切割点,进行向后寻找回文,合适的加入list,不合适直接进入下一层循环。通过标识去除重复值(树层去重)原创 2023-05-01 11:21:59 · 67 阅读 · 0 评论 -
day25 回溯 | 216,17
解决输入字符对应的序列的映射问题。类似组合问题,单个序列中回溯即可。17.电话号码的字母组合。216.组合总和III。原创 2023-04-29 10:43:13 · 71 阅读 · 0 评论 -
day22 二叉树| 235,701,450
也可以按照搜索树的特征,无需进行回溯,从上到下进行遍历。删除节点存在 且 左子树 右子树均都不为空 分别处理。将固定的数值插入到合适的位置。删除节点存在 且 左子树为空 右子树不为空。删除节点存在 且 左子树不为空 右子树为空。235. 二叉搜索树的最近公共祖先。可以按照二叉树的最近公共祖先进行操作。701.二叉搜索树中的插入操作。450.删除二叉搜索树中的节点。删除节点不存在。分几种情况。原创 2023-04-27 15:59:14 · 402 阅读 · 0 评论 -
day20 | 二叉树 654,617,700,98
寻找到二叉树的最大节点和最大位置,按照先序构建二叉树。先转换为数组 再进行比较是否有序。同时操作两个二叉树 进行合并。700.二叉搜索树中的搜索。98.验证二叉搜索树。原创 2023-04-24 08:28:44 · 73 阅读 · 0 评论 -
day16 二叉树| 110,257,404
LeetCode404 计算所有左节点的和。* 二叉树的左右高度相差不超过1即可。LeetCode110 平衡二叉树。* 递归举出二叉树的所有路径。原创 2023-04-21 08:36:53 · 58 阅读 · 0 评论 -
day11 栈和队列 | 20,1047,150
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。* 注意 除法 和 减法,除法 和 减法都是使用后出栈的值操作先出栈的值,其他都是正常顺序出栈操作。* 比较栈顶元素 和 待入栈元素是否相同,如果相同直接出栈。* 每个右括号都有一个对应的相同类型的左括号。* * 如果字符串为( => 栈中压入)* * 如果字符串为[ => 栈中压入]* * 如果字符串为{ => 栈中压入}* 左括号必须用相同类型的右括号闭合。* 左括号必须以正确的顺序闭合。原创 2023-04-15 18:08:21 · 103 阅读 · 0 评论 -
day10 | 栈和队列 232 225
使用一个备份队列,保证每一次之前的数据在新插入数据的后面。LeetCode 232 用栈实现队列。* 一个输入栈,一个输出栈实现先入先出。LeetCode225 用队列实现栈。原创 2023-04-14 08:25:45 · 83 阅读 · 0 评论 -
day09 字符串 | 28,459
LeetCode459 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。注:先找到一个子串,然后去找当前子串 * N能否组成需要的字符串。LeetCode28 找出字符串中第一个匹配项的下标。注: 采用双指针暴力解法(不会KMP..)原创 2023-04-13 08:29:50 · 92 阅读 · 0 评论 -
day08 字符串 | 344,541,JZ_05,151,JZ_58_2
注: 此处是 left < right 因为当left 和 right处于同一位置时,无需进行原地翻转。每次相隔2k,翻转k个元素,注意 翻转k个元素 和 整体长度的大小关系,可能会超出长度。注: 先去除首尾 和 中间的多余空格 然后进行全部单词翻转,再按照单个单词翻转。注: 特殊方法,先将单个部分进行旋转,然后进行整体旋转。LeetCode 541 翻转字符串II。LeetCode151 翻转字符串的单词。LeetCode 344 翻转字符串。JZ_58_2 字符串的左旋转。JZ_05 替换空格。原创 2023-04-12 19:40:27 · 60 阅读 · 0 评论 -
day06 | Hash专题 242,349,202,1
两数之和,绝对经典的题目,除了使用Hash之外,唯一的坑可能在于是先判断 还是先入map的顺序了.. (掉进去无数回。* 快乐数 => 最终所有的操作结果会收敛到一个区间(采用set接收,如果重复出现两次,说明已经进入了循环)* set的简单应用(注:一般代码中可以直接写,或者用redis的 set指令来处理并交差级)有效的字母异位词,由于是操作string,可以使用字典(int[26])进行处理。原创 2023-04-10 13:21:57 · 78 阅读 · 0 评论 -
代码随想录算法训练营第四天| 24,19,面试02.07,142
判断链表的成环点,具体的公式推导 在注释中,之前看过这道题,理解的第一次相遇后使用同样步长一个从相遇点走,一个从头走,距离一样(a == c)其实是错误的,a和c是有一定关系的(a = (n - 1)(c + b) + c ) c+b的整数倍刚好是一个环的长度。因此才最终会到成环点。找出两个单链表的相交起始节点,相当于将一个节点的尾链接上另外一个节点的头部,然后进行遍历,如果有重合点,一定相交。两两交换链表节点,采用原地交换,使用tmp节点进行交换前临时节点存储即可(三个一组)原创 2023-04-08 15:22:34 · 68 阅读 · 0 评论 -
代码随想录算法训练营第三天| 203,707,206
cur.next = pre => pre = cur =>cur = next(原来的cur的后一个节点,提前存储) return pre;移除链表元素: 为了将处理头结点的逻辑和处理其他节点逻辑保持一致,引入了dummyHead。设计链表(基础中的基础,包含了删除,新增,查找等基础操作,还是会多做几遍)原创 2023-04-07 13:23:06 · 140 阅读 · 0 评论 -
代码随想录算法训练营第二天| 977,209,59
标准的滑动窗口题,主要是滑动窗口到达临界点如何处理左右边界。* 数组平方后,最大值一定是在两侧 因为可以采用双指针。977.有序数组的平方。209.长度最小的子数组。原创 2023-04-06 13:47:17 · 589 阅读 · 0 评论 -
代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
1. 暴力解法: 外层循环遍历数组,如果发现出现需要替换的值,将后续的值均都往前赋值(本意是向前提一位,但是操作上是赋值,需要将末值进行忽略)寻找最左区间 和 最右区间,套路和基础二分法类似,就是要在找到target的时候继续向左或者向右移动。2. 双指针: 快指针遍历数组,找到无需移除的元素,慢指针原地更新。* 考虑如何不让数据溢出,区间如何切换。原创 2023-04-05 10:51:22 · 895 阅读 · 0 评论