1.leetcode448题 找到所有数组中消失的数字
和之前某个题很像,就是把里面的值放到正确的位置上面去,然后再一个for循环去判断哪些值缺失了 好像就是leetcode41题 寻找第一个丢失的整数,只不过那个题把里面的 不在1到n范围内的值,在放的时候进行了一些处理,不在范围内的把他置为n+1 然后第二次遍历的时候不管就可以了 !!
自己一次做出来了! perfect!
2.leetcode 4题 找两个排序数组的中位数
太难了! 每次划掉k/2个数! 可以再看一下思路,自己看的是acwing上讲解的思路!
3.leetcode56题 区间排序合并
和那个skyline 很像,扫描线段
这个题! 暴露了自己对于很多类型的数组,不会出来的问题
如何对一个二维数组 按照第一个元素去排序! ?
直接arrays.sort就可以了 !!arrays.sort(nums, new compartor return o1[0] - o2[0]);
然后自己一开始不知道怎么去保存中间的答案数组,因为最后要输出的是一个int[][】 自己完全不会处理, 看了答案就知道 先用一个arraylist去保存,然后用res.toArray 可以转换成一个int【】【】 数组,只要把第一维的长度定义好就可以!
4.leetcode57题 插入区间合并
从小到大去合并! 一部分一部分合并
也可以像56题一样,先把这个new inter插入进去,然后按照56题去做!
5.leetcode75题 颜色排序
counting sort! 很棒啊! 先计算每个数的次数 ,然后依次去放
还可以用partition的做法! 待会再看看!
6.leetcode 138题 复制带随机指针的链表
把复制的链表放到后面挂着,先连接复制的链表,然后连接 随机指针
最后要进行分离!! 注意这里分离的时候,不仅仅是输出复制出的那个链表就够了,要进行整体的分离! 原链表分离,复制后的链表也分离
还有就是注意边界的处理,自己这里出问题了! next != null 因为可能这里的cur是最后一个节点,next.next是不存在的! next == null 了已经! 所以判断的时候 是next != null 而不是next.next != null
7.leetcode152题连续子数组最大乘积
和那个连续子数组最大和 很像!!但是乘积和 和还是不太一样! 有可能前面是负数 但是当前也是负数,得出的结果也需要记录!!
自己做的时候 有点迷茫了,不知道要不要记录前面的值,改了很多次 还是不会, 哎 ,得记录一个最大值和一个最小值
8.leetcode713题 连续子数组乘积小于k的个数
很典型的双指针题目,自己做的很差!!! 找时间再做一次
9.leetcode 207题 课程安排
图的dfs 自己不太会!! 拓扑排序
10.leetcode 146 lru cache
很重要的一个题!一个map里面存key和对应的node
然后一个dummyhead 和dummytail 中间分别放这些node! 多做几次!