摘要:
题意是求最大子序列和 input:[−2,1,−3,4,−1,2,1,−5,4] ans:6 [4,−1,2,1] 下面给出三种不同时间复杂度的解法。一. O(N^2) 两个point,一个指向子序列的头,一个指向子序列的尾,两层循环求该子序列的和。public class Sol... 阅读全文
摘要:
[ [2], [3,4], [6,5,7], [4,1,8,3]]一、空间复杂度O(n^2) 一共有n行,那么所占空间为n*(n+1)/2的一维数组,从上往下填表,由于下一个值的得出需要上一个值,所以从上往下填表需要设置两个临时变量进行倒换,比较麻烦;且从上... 阅读全文
摘要:
全子集问题的三种解法: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]。这题有固定的解法,给定... 阅读全文