1.二进制处理 (leetcode 78题,求一个数组的子集)
二进制怎么用,我居然不会,干!
public static List<List<Integer>> binaryBit(int[] nums) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
for (int i = 0; i < (1 << nums.length); i++) {
List<Integer> sub = new ArrayList<Integer>();
for (int j = 0; j < nums.length; j++)
if (((i >> j) & 1) == 1) sub.add(nums[j]);
res.add(sub);
}
return res;
}
2.二分法求分界点,求极大值(山峰)
(leetcode 153题,寻找旋转数组的最大值)
3.快慢指针求链表中点、求链表的环()
4. 用三次旋转得到一个旋转数组
(leetcode 189题,旋转数组)
5. 双指针删除重复项,移动零
(26题,283题,强烈建议做一下)
6.螺旋数组
7.单调栈
496题,503题