22、括号生成
回溯法,注意恢复现场。
31、下一个排列
从后往前,找到数减小的位置,假设 nums[i-1] < nums[i]
,在 [i, n-1]
区间找 >nums[i-1]
的最小值 nums[j]
,然后将 nums[j]
与 nums[i-1]
交换,然后将 [i, n-1]
区间排序即可。
如果没有数减小的位置,说明是最后一个,那么将数组排序即可。
33、搜索旋转排序数组
二分法
思路很容易,但不容易写对。
34、在排序数组中查找元素的第一个和最后一个位置
二分法的三种模板
TODO:补充代码
39、组合总和
回溯法,如何判重是难点。