- 博客(84)
- 收藏
- 关注
原创 代码随想录之额外题目
要求logn 那就明显是二分查找算法//要求logn 那就二分查找 int begin = 0;//如果没找到就是-1 res [ 1 ] = - 1;//注意要相等 int mid =(begin + end) / 2;//找到了之后开始向两边扩展搜索 j --;k ++;return res;} else {//如果没找到 就不会更新 返回初始值-1 } }
2023-05-09 21:29:49
899
原创 代码随想录之贪心合集
一开始的思路是判断重叠就把上一个和现在的边界直接更新到原数组中,然后再判断不相等的加到res中,提交了之后发现有问题:出现两个以上需要重叠就不行,因为只能更新最近两个,更之前的就更新不到,这样就会出错。一开始打算转换成上面的区间来计算,然后越写越麻烦,还是去看了题解,get到了思路,用一个数组去记录每个字母出现的最晚的index,然后遍历这个数组,如果当前索引已经等于最大的出现过的那个索引值,就可以在这里分割。和上题其实是一样的,但是在写的时候遇到了排序的问题,用上一题的排序方法出出现执行错误,改成。
2023-04-25 19:53:24
648
原创 代码随想录之二叉树2(力扣题号)
的累加数组,也就是[20, 18, 13],感觉这就简单了。知道如何遍历这个二叉树,就迎刃而解了,从树中可以看出累加的顺序是右中左,所以我们需要。要调整二叉树的结构,感觉非常难,特别是当要删除的节点的左右节点都不为空的情况下,一直往平衡二叉树的左右旋中去想就更加复杂,其实只需要。因为搜索树遍历的时候就是按顺序大小的,所以只要在中序遍历 本层递归的逻辑中记录出现次数最多的元素!从下往上找,后序遍历就是从下网上,在后序遍历的处理本层逻辑中返回。例如,要删除7,只要把7的左子树,放到8下就可以!
2023-03-22 17:49:32
316
原创 代码随想录之回溯(力扣题号)
没看题解真的想不到和回溯有什么关系,还是看了别人的代码再自己手打的,还是从这个代码中学到了不少,compareTo函数可以用来比较String的大小,写法和其他回溯没有什么区别,就是多用来判断如果找到了结果就返回,不用继续往下,因为先对tickets排序过了,先找到的一定是符合要求的字典序最小的,所以找到了就不用再找了。不用set去重,直接剪枝,数组标记每个位置的数字是否被使用过而不是统计每个数字出现的次数,这样在剪枝判断的时候就可以利用上一个相同的数字是否出现过来判断。改了非常非常非常久!
2023-03-19 16:04:05
398
原创 代码随想录之二叉树1(力扣题号)
看到样例输出以为是list,可是原函数的返回是Node,所以还奇怪了一下,其实只要把root的树的所有next赋值完成,再返回root即可。还是可以用层序遍历,只要判断节点的左节点不为空,且左节点是叶子节点即可。除了用层次遍历外,用递归也很简单,在二叉树的最大深度基础上改一下即可。用前序遍历或者后遍历的写法都可以,本层做的事情就是将左右节点交换。写了很久,理解了很久,用队列来,可以记一下这题。除了之前用的递归写法之外可以用层序遍历。在最基础的层次遍历上反转即可。注意看它定义的数据结构。
2023-03-17 15:25:18
376
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人