数组中常见的问题
排序: 选择排序;插入排序;归并排序;快速排序
查找:二分查找法
数据结构:栈;队列;堆
…
二分查找法:
1964年提出,没有bug的二分查找法是在1962年出现
对于有序的排列,才能使用二分查找法
1查找中间的元素是否和目标元素相等
2小于,在左边找
3大于,在右边找
4关键点:边界问题
区间为闭区间[l…r]
区间为前闭后开:[l…r)
如果存在整型溢出
leetcode 283 Move Zeros
给定一个数组nums,写一个函数,将数组中所有的0挪到数组的末尾,而维持其他非0元素的相对位置。
1 思考题:删除元素
2 删除重复的元素
扩展题:最多保留两个重复元素
3-5 基础算法思路的应用
扩展题:归并排序
leetcode 215 利用快排的思路,在一个整数序列中寻找第k大的元素
leetcode 167
1 两个不同的元素
2 返回索引(索引是0开始,还是1开始)
167的解决方法就是对撞指针
125 有效回文串
空字符串如何看?
字符的定义?
大小写问题?
解决方案:对撞指针
扩展题345:对元音字母进行翻转
容器水最多,思考仍然用对撞指针去解决
3-7 双索引技术(对撞指针等)
1 滑动窗口:
ep1: leetcode 209
什么叫子数组?子数组分连续喝不连续梁总中情况
如果没有接怎么办?返回0?、
如果有多个解怎么样?应该怎么返回?按照什么规则?
练习题:sum求解是否可以使复杂度降为o(n*n)
窗口的长度把那个不是保持不变,同时由i和j控制;
3-8
如何记录重复字符:
练习题1:(利用滑动窗口解决)
注意问题: 字符集范围?英文小写字母
返回的解的顺序?任意
练习题2:leetcode76
注意问题: