![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
不会没坚持吧
一只小小明
希望明天的你会感谢今天的自己
展开
-
不会就坚持71天吧 链表排序
找到链表的中点,以中点为分界,将链表拆分成两个子链表。寻找链表的中点可以使用快慢指针的做法,快指针每次移动22步,慢指针每次移动11步,当快指针到达链表末尾时,慢指针指向的链表节点即为链表的中点。上述过程可以通过递归实现。递归的终止条件是链表的节点个数小于或等于11,即当链表为空或者链表只包含11个节点时,不需要对链表进行拆分和排序。将两个排序后的子链表合并,得到完整的排序后的链表。对链表自顶向下归并排序的过程如下。对两个子链表分别排序。...原创 2022-07-26 18:33:36 · 80 阅读 · 1 评论 -
不会就坚持70天吧 数组中第k大的数
代码】不会就坚持70天吧数组中第k大的数。原创 2022-07-26 18:32:11 · 186 阅读 · 0 评论 -
不会就坚持69天吧 合并区间
代码】不会就坚持69天吧合并区间。原创 2022-07-26 18:28:40 · 81 阅读 · 0 评论 -
不会就坚持68天吧 狒狒吃香蕉
class Solution { public int minEatingSpeed(int[] piles, int h) { int low = 1; int high = 0; for (int pile : piles) { high = Math.max(high, pile); } int k = high; while (low < high) {原创 2022-07-26 18:18:43 · 137 阅读 · 0 评论 -
不会就坚持67天吧 平方根
代码】不会就坚持67天吧平方根。原创 2022-07-25 16:20:10 · 69 阅读 · 0 评论 -
不会就坚持66天吧 权重生成随机数
代码】不会就坚持66天吧权重生成随机数。原创 2022-07-25 16:18:33 · 48 阅读 · 0 评论 -
不会就坚持65天吧 只出现一次的数字
代码】不会就坚持65天吧只出现一次的数字。原创 2022-07-25 16:17:16 · 41 阅读 · 0 评论 -
不会就坚持64天吧 查找插入位置
代码】不会就坚持64天吧查找插入位置。原创 2022-07-25 16:10:00 · 43 阅读 · 0 评论 -
不会就坚持63天吧 最大的异或
代码】不会就坚持63天吧最大的异或。原创 2022-07-25 16:08:17 · 47 阅读 · 0 评论 -
不会就坚持62天吧 单词之和
代码】不会就坚持62天吧单词之和。原创 2022-07-25 16:06:21 · 68 阅读 · 0 评论 -
不会就坚持61天吧 最短的单词编码
代码】不会就坚持61天吧最短的单词编码。原创 2022-07-25 16:04:23 · 69 阅读 · 0 评论 -
不会就坚持60天吧 神奇的字典
代码】不会就坚持60天吧神奇的字典。原创 2022-07-25 16:02:21 · 58 阅读 · 0 评论 -
不会就坚持59天吧 替换单词
代码】不会就坚持59天吧替换单词。原创 2022-07-25 16:00:55 · 48 阅读 · 0 评论 -
不会就坚持58天吧 实现前缀树
代码】不会就坚持58天吧实现前缀树。原创 2022-07-25 15:59:21 · 72 阅读 · 0 评论 -
不会就坚持57天吧 和最小k树对
继续转化为BFS考虑nums1和nums2已经有序,显然nums1[0]于nums2[0]组成的数对和是最小的后面简写为(0,0),表示nums1取下标为0的元素,nums2取下标为0的元素组成数对第2小的数对,应该从(1,0)和(0,1)中选择,也就是上一个最小数对(0,0),要么nums1的下标加1,要么nums2的下标加1这类似于BFS:当访问到某个节点时,把它可达的节点入队列,作为后续的选择具体地,当(u,v)为第x小的数对时,第x+1小的数对可能是(u+1,v)和(u,v+1),但不限于原创 2022-07-12 22:54:47 · 114 阅读 · 0 评论 -
不会就坚持56天吧 频率最高
堆排序快排原创 2022-07-11 11:20:53 · 57 阅读 · 0 评论 -
不会就坚持55天吧 前缀树
我们从字典树的根开始,插入字符串。对于当前字符对应的子节点,有两种情况:子节点存在。沿着指针移动到子节点,继续处理下一个字符。子节点不存在。创建一个新的子节点,记录在children 数组的对应位置上,然后沿着指针移动到子节点,继续搜索下一个字符。重复以上步骤,直到处理字符串的最后一个字符,然后将当前节点标记为字符串的结尾。...原创 2022-07-10 20:57:22 · 74 阅读 · 0 评论 -
不会就坚持54天吧 数据流的第 K 大数值
我们可以使用一个大小为 kk 的优先队列来存储前 k 大的元素,其中优先队列的队头为队列中最小的元素,也就是第 k大的元素。在单次插入的操作中,我们首先将元素val 加入到优先队列中。如果此时优先队列的大小大于 k,我们需要将优先队列的队头元素弹出,以保证优先队列的大小为 k。.........原创 2022-07-09 23:31:37 · 192 阅读 · 0 评论 -
不会就坚持53天吧 日程表
直接遍历我们记录下所有已经预订的课程安排区间,当我们预订新的区间start,end时,此时检查当前已经预订的每个日程安排是否与新日程安排冲突。若不冲突,则可以添加新的日程安排。原创 2022-07-08 21:05:42 · 54 阅读 · 0 评论 -
不会就坚持50天吧 对称
继续递归思路和算法如果一个树的左子树与右子树镜像对称,那么这个树是对称的。因此,该问题可以转化为:两个树在什么情况下互为镜像?如果同时满足下面的条件,两个树互为镜像:它们的两个根结点具有相同的值 每个树的右子树都与另一个树的左子树镜像对称我们可以实现这样一个递归函数,通过「同步移动」两个指针的方法来遍历这棵树,pp指针和qq指针一开始都指向这棵树的根,随后pp右移时,qq左移,pp左移时,qq右移。每次检查当前pp和qq节点的值是否相等,如果相等再......原创 2022-07-05 23:32:17 · 65 阅读 · 0 评论 -
不会就坚持52天吧 在范围之内
继续吧原创 2022-07-07 19:01:58 · 62 阅读 · 0 评论 -
不会就坚持51天吧 两个节点之和
我们可以使用深度优先搜索的方式遍历整棵树,用哈希表记录遍历过的节点的值。对于一个值为 xx 的节点,我们检查哈希表中是否存在 k - xk−x 即可。如果存在对应的元素,那么我们就可以在该树上找到两个节点的和为 kk;否则,我们将 xx 放入到哈希表中。如果遍历完整棵树都不存在对应的元素,那么该树上不存在两个和为 kk 的节点。...原创 2022-07-06 21:08:53 · 78 阅读 · 0 评论 -
不会就坚持49天吧 中序后续 所有大于等于节点的和
为了找到二叉搜索树中的节点 pp 的中序后继,最直观的方法是中序遍历。由于只需要找到节点 pp 的中序后继,因此不需要维护完整的中序遍历序列,只需要在中序遍历的过程中维护上一个访问的节点和当前访问的节点。如果上一个访问的节点是节点 pp,则当前访问的节点即为节点 pp 的中序后继。反序中序遍历思路及算法本题中要求我们将每个节点的值修改为原来的节点值加上所有大于它的节点值之和。这样我们只需要反序中序遍历该二叉搜索树,记录过程中的节点值之和,并不断更新当前遍历到的节点的节点值,即可得到题目要求的累加树。原创 2022-07-04 11:21:10 · 59 阅读 · 0 评论 -
不会就坚持48天吧 展平二叉树
加油中序遍历之后生成新的树算法题目要求我们返回按照中序遍历的结果改造而成的、只有右节点的等价二叉搜索树。我们可以进行如下操作:先对输入的二叉搜索树执行中序遍历,将结果保存到一个列表中;然后根据列表中的节点值,创建等价的只含有右节点的二叉搜索树,其过程等价于根据节点值创建一个链表。......原创 2022-07-03 22:31:56 · 54 阅读 · 0 评论 -
不会就坚持47天吧 排序链表
自顶向下归并排序对链表自顶向下归并排序的过程如下。找到链表的中点,以中点为分界,将链表拆分成两个子链表。寻找链表的中点可以使用快慢指针的做法,快指针每次移动 22 步,慢指针每次移动 11 步,当快指针到达链表末尾时,慢指针指向的链表节点即为链表的中点。对两个子链表分别排序。将两个排序后的子链表合并,得到完整的排序后的链表。可以使用「21. 合并两个有序链表」的做法,将两个有序的子链表进行合并。上述过程可以通过递归实现。递归的终止条件是链表的节点个数小于或等于 11,即当链表为空或者链表只包含 11 个节原创 2022-07-02 22:21:56 · 47 阅读 · 0 评论 -
不会就坚持46天吧 二叉树之最右 剪枝
目录最右剪枝路径数字之和向下路径之和目的是找到所有的最右节点使用简单的BFS逐层遍历即可解题我们创建一个列表ret,用于记录每行的最右节点的val然后创建队列queue,当root不为空时,将root加入队列,然后开始while循环判断每行的最后一个节点,并将该节点的值加入ret列表中根据每个出队的节点,判断该节点的左、右子树是否存在,若存在则执行入队操作直到队列为空时,终止循环,返回ret即可剪枝目的就是让所有叶子结点为0的节点置为空路径数字之和给定一个二叉树的根节点 root原创 2022-07-01 12:37:28 · 57 阅读 · 0 评论 -
不会就坚持45天吧 二叉树中序
首先我们需要了解什么是二叉树的中序遍历:按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过程天然具有递归的性质,我们可以直接用递归函数来模拟这一过程。 迭代...原创 2022-06-30 17:37:41 · 159 阅读 · 0 评论 -
不会就坚持44天吧 环形链表
哈希表思路及算法最容易想到的方法是遍历所有节点,每次遍历到一个节点时,判断该节点此前是否被访问过。具体地,我们可以使用哈希表来存储所有已经访问过的节点。每次我们到达一个节点,如果该节点已经存在于哈希表中,则说明该链表是环形链表,否则就将该节点加入哈希表中。重复这一过程,直到我们遍历完整个链表即可。...原创 2022-06-29 18:42:06 · 121 阅读 · 0 评论 -
不会就坚持43天吧 反向遍历
反向遍历题目要求得到字符串中最后一个单词的长度,可以反向遍历字符串,寻找最后一个单词并计算其长度。由于字符串中至少存在一个单词,因此字符串中一定有字母。首先找到字符串中的最后一个字母,该字母即为最后一个单词的最后一个字母。从最后一个字母开始继续反向遍历字符串,直到遇到空格或者到达字符串的起始位置。遍历到的每个字母都是最后一个单词中的字母,因此遍历到的字母数量即为最后一个单词的长度。...原创 2022-06-28 22:22:08 · 70 阅读 · 0 评论 -
不会就坚持42天吧 最底最左值(二叉树)
使用记录遍历到的节点的高度,curVal 记录高度在curHeight 的最左节点的值。在深度优先搜索时,我们先搜索当前节点的左子节点,再搜索当前节点的右子节点,然后判断当前节点的高度 height 是否大于 curHeight,如果是,那么将 curVal 设置为当前结点的值,curHeight 设置为 height。二、广搜的方法思想是加入队列 先让右端点进队列 总能够尽量在队尾剩下左端点然后依次遍历 赋值......原创 2022-06-27 10:00:59 · 90 阅读 · 0 评论 -
不会就坚持41天吧 二叉树每层最大值
目录一、list中add、set方法二、set(int index,E element):实际上是一种替换操作二叉树每层最大值整形类型是有范围的,最大值为Integer.MAX_VALUE,即2147483647,最小值为Integer.MIN_VALUE -2147483648add方法,有2种重载方法1、boolean add(E element):用于向集合的末尾插入新的元素,是List接口中最常用的插入方法2、void add(int index, E element):可以在插入操作过程中指定原创 2022-06-26 21:42:47 · 165 阅读 · 0 评论 -
不会就坚持40天吧 合并有序数
直观的方法是先将数组 num2放进num1的尾部,然后排序。双指针的方法原创 2022-06-25 19:08:36 · 61 阅读 · 0 评论 -
不会就坚持39天吧 二叉树之添加节点
第一次做二叉树的题目才发现的确没有那么简单二叉树基本的特征的确知道但是不会应用到代码上来反应我能够知道我学的不好 但是我愿意继续学习下去 并没有厌烦想逃避的想法加油吧!完全二叉树的特性:定义:完全二叉树定义完全二叉树(Complete Binary Tree)若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。特性1:对于任意一个结点,不可能只存在右节点不存在左节点;特性2:使用层序遍历法遍历整颗树,找到第一原创 2022-06-24 11:55:31 · 415 阅读 · 0 评论 -
不会就坚持38天吧 单调栈 滑动窗口想队列 双端队列
单调栈,顾名思义就是栈内元素单调按照递增(递减)顺序排列的栈。单调递增栈:①在一个队列中针对每一个元素从它右边寻找第一个比它小的元素②在一个队列中针对每一个元素从它左边寻找第一个比它小的元素单调递减栈:①在一个队列中针对每一个元素从它右边寻找第一个比它大的元素②在一个队列中针对每一个元素从它左边寻找第一个比它大的元素Stack.pop()思想:当前栈顶的意思是已经存在里面的了i是将要存进去的两个相比 然后如果i的数值大直接返回 相减的数值 否则 直接压入栈内............原创 2022-06-23 10:13:48 · 187 阅读 · 0 评论 -
不会就坚持37天吧 加1
继续下去吧找出最长的后缀99思路当我们对数组digitsdigits加一时,我们只需要关注digitsdigits的末尾出现了多少个99即可。我们可以考虑如下的三种情况: 如果digitsdigits的末尾没有99,例如[1,2,3][1,2,3],那么我们直接将末尾的数加一,得到[1,2,4][1,2,4]并返回; 如果digitsdigits的末尾有若干个99,例如[1,2,3,9,9][1,2,3,9,9],那么我们只需要找出从末尾开始的第一......原创 2022-06-22 23:52:20 · 57 阅读 · 0 评论 -
不会就坚持36天吧 插入位置
坚持!二分查找思路与算法假设题意是叫你在排序数组中寻找是否存在一个目标值,那么训练有素的读者肯定立马就能想到利用二分法在O(logn)O(logn)的时间内找到是否存在目标值。但这题还多了个额外的条件,即如果不存在数组中的时候需要返回按顺序插入的位置,那我们还能用二分法么?答案是可以的,我们只需要稍作修改即可。考虑这个插入的位置pospos,它成立的条件为:nums[pos−1]<target≤nums[pos]nums[pos−1]<target≤nums[pos]...原创 2022-06-21 23:18:05 · 81 阅读 · 0 评论 -
不会就坚持35天吧 后缀表达式
总体感觉这个并没有特别难 思路是有的运用栈的思想原创 2022-06-20 11:03:39 · 45 阅读 · 0 评论 -
不会就坚持34天吧 最大子数组和
123123123动态规划思路和算法假设numsnums数组的长度是nn,下标从00到n−1n−1。我们用f(i)f(i)代表以第ii个数结尾的「连续子数组的最大和」,那么很显然我们要求的答案就是:{f(i)}0≤i≤n−1max{f(i)}因此我们只需要求出每个位置的f(i)f(i),然后返回ff数组中的最大值即可。那么我们如何求f(i)f(i)呢?我们可以考虑nums[i]nums[i]单独成为一段还是加入f(i−1)f(i−1)对应的那一段......原创 2022-06-19 22:53:31 · 79 阅读 · 1 评论 -
不会就坚持33天吧 strstr
继续加油我们可以让字符串needleneedle与字符串haystackhaystack的所有长度为mm的子串均匹配一次。为了减少不必要的匹配,我们每次匹配失败即立刻停止当前子串的匹配,对下一个子串继续匹配。如果当前子串匹配成功,我们返回当前子串的开始位置即可。如果所有子串都匹配失败,则返回−1−1。......原创 2022-06-18 23:35:10 · 40 阅读 · 0 评论 -
不会就坚持32天吧 最后一个单词长度
今天过得还可以继续加油吧!题目要求得到字符串中最后一个单词的长度,可以反向遍历字符串,寻找最后一个单词并计算其长度。由于字符串中至少存在一个单词,因此字符串中一定有字母。首先找到字符串中的最后一个字母,该字母即为最后一个单词的最后一个字母。从最后一个字母开始继续反向遍历字符串,直到遇到空格或者到达字符串的起始位置。遍历到的每个字母都是最后一个单词中的字母,因此遍历到的字母数量即为最后一个单词的长度。......原创 2022-06-17 23:25:47 · 48 阅读 · 0 评论