- 博客(8)
- 资源 (2)
- 收藏
- 关注
原创 53. Maximum Subarray
题意是求最大子序列和 input:[−2,1,−3,4,−1,2,1,−5,4] ans:6 [4,−1,2,1] 下面给出三种不同时间复杂度的解法。一. O(N^2) 两个point,一个指向子序列的头,一个指向子序列的尾,两层循环求该子序列的和。public class Solution { public int maxSubArray(int[] nums) {
2016-10-10 16:31:11 193
原创 120.Triangle
[ [2], [3,4], [6,5,7], [4,1,8,3]]一、空间复杂度O(n^2) 一共有n行,那么所占空间为n*(n+1)/2的一维数组,从上往下填表,由于下一个值的得出需要上一个值,所以从上往下填表需要设置两个临时变量进行倒换,比较麻烦;且从上往下填表的最终结果需要在最底行中找最小值。二、空间复杂度O(n) 填表是一个双重循环,在内循
2016-10-10 16:30:45 227
原创 全子集问题(subset)
全子集问题的三种解法:1.回溯法 回溯是经典的解法,有固定的模板,用递归实现。class Solution {public: vectorvectorint>> subsets(vectorint>& nums) { sort(nums.begin(), nums.end()); vectorvectorint>> subs; v
2016-10-10 16:30:23 2013
原创 二分搜索
//非递减数列,[left, right] 闭区间,最后left一定会等于rightwhile(left //区间只剩1个元素时终止,此时left=right int mid = left + ((right - left) >> 1);//防止溢出,没有+1,mid偏左 if(target > nums[mid]) { left = mid + 1;//因为mi
2016-10-10 16:29:58 211
原创 leetcode之图像旋转(Rotate Image)
新建一个数组,将原数组的数据按规律复制到新数组,这种方法做不到in-place,占用了额外一个数组的空间newx = y;newy = n-1-x;我们可以按ring by ring的顺序进行操作将上下的行进行反转,然后按主对角线进行对称交换;这这种方法也很容易做到逆时针旋转。/* * clockwise rotate * first reverse up to do
2016-10-10 16:29:24 1081
原创 leetcode之组合数(Combination Sum)
Combination Sum//代码1public class Solution { public ListList> combinationSum(int[] candidates, int target) { ListList> result = new ArrayListList>(); if(candidates.length == 0 ||
2016-10-10 16:29:03 252
原创 N皇后问题
这题是回溯法的经典例题,在剪枝的判断中,需要判断3个条件:每列是否冲突45°对角线是否冲突135°对角线是否冲突 对于第1个条件,可以很容易想到用数组查询;但对于第2和第3个条件,我原来是用for循环检查的,后来发现更优的解法:也可以用数组查询法,这样这三个条件就可以统一起来了。
2016-10-10 16:28:40 223
原创 leetcode之全排列问题(Permutations)
在leetcode上,跟Permutations有关的题目:31 Next Permutation46 Permutations一.31 Next Permutation 31题是排列的入门题,给出[1,2,3,4],需给出下一排列[1,2,4,3]。这题有固定的解法,给定排序nums[n]=[1,4,2,7,6,5,3],n=0~6:从序号6开始往前寻找第一对
2016-10-10 16:26:33 494
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人