- 一般双指针能实现的,一般可以通过另外定义一个数组来记录新数组(也就是答案)
- 双指针实现数组填充的问题一般来说补充长度之后从后面开始遍历会比较简单
- 数组类的变化总结:
- 首先是数组长度总的来说是变短的,可以用双指针和暴力解法,或者是新建新的数组来记录答案
- 其次是数组长度并没有改变的,一般直接采用暴力解法,直接替换即可;
- 最后是长度变长的,那么可以使用扩容之后使用双指针和新建数组来记录答案;
- 回溯算法分为很多种类,组合,排列,切割等等。
- 所有数组类的题目元素的替换,增长,缩短的题目,都可以用双指针和暴力法,或者申请新的空间来解决,具体情况具体分析
- for (int num : nums2) 表示的是从nums2中轮番拿出当中的元素给num
- 对于在循环内层再建立循环的注意点(也就是二层循环,并且最同一个对象进行操作):不能对操作的数组或者是字符串有下标溢出的操作
- sort的第三个参数可以用匿名函数,两者是等效的,但是我碰到了一个力扣上的题目,出现频率最高的数字,使用两个方法结果不一样,一个报错,一个正常。
- 具体问题具体分析,在回溯算法中,要是for的范围一直忘忧递减的时候要加上u,比如组合问题,因为选过的元素之前的元素都没有必要去选,但是排列问题的话那就不能用u,因为排列可以是无序的,因为
组合问题[1,2]和[2,1]是一样的,所以可以定义为选过2之后可以不用选1,也就可以用u
排列问题[1,2]和[2,1]是不一样的,所以选过2之后还要判断一下这个1有没有选,也就不用这个u。
posted @
2022-09-05 22:01
铜锣湾陈昊男
阅读(
14)
评论()
收藏
举报