摘要:
全子集问题的三种解法:1.回溯法 回溯是经典的解法,有固定的模板,用递归实现。class Solution {public: vector> subsets(vector& nums) { sort(nums.begin(), nums.end()); ... 阅读全文
摘要:
//非递减数列,[left, right] 闭区间,最后left一定会等于rightwhile(left > 1);//防止溢出,没有+1,mid偏左 if(target > nums[mid]) { left = mid + 1;//因为mid已经偏左,lef... 阅读全文
摘要:
1.新建一个数组,将原数组的数据按规律复制到新数组,这种方法做不到in-place,占用了额外一个数组的空间newx = y;newy = n-1-x;2.我们可以按ring by ring的顺序进行操作 交换在每个ring上的4个点之间进行public class Solutio... 阅读全文
摘要:
Combination Sum//代码1public class Solution { public List> combinationSum(int[] candidates, int target) { List> result = new ArrayLis... 阅读全文
摘要:
这题是回溯法的经典例题,在剪枝的判断中,需要判断3个条件:每列是否冲突45°对角线是否冲突135°对角线是否冲突对于第1个条件,可以很容易想到用数组查询;但对于第2和第3个条件,我原来是用for循环检查的,后来发现更优的解法:也可以用数组查询法,这样这三个条件就可以统一起来了。 ... 阅读全文
摘要:
在leetcode上,跟Permutations有关的题目:31 Next Permutation46 Permutations一.31 Next Permutation 31题是排列的入门题,给出[1,2,3,4],需给出下一排列[1,2,4,3]。这题有固定的解法,给定... 阅读全文