跳到主要内容

LeetCode 21~40

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、组合总和

回溯法,如何判重是难点。