自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

freehome1的博客

研究僧

  • 博客(15)
  • 收藏
  • 关注

原创 三道LeetCode理解贪心和DP

贪心:例子为55题:JUMP GAME  题意:这样一个非负的数组,每一个元素代表此时能跳多远,看是否能到达最后一个位置。解决思路:从第一步开始计算可以前进的最大步长,每走一步比较更新该值,始终保持当前位置的时候可前进步长最大。到达最终位置前,若出现步长每个阶段的最优状态都是由上一个阶段的最优状态得到的。代码:class Solution { public boolean canJ

2018-02-25 16:10:33 686

原创 LeetCode 55. Jump Game

Given an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that position.Determine if yo

2018-01-27 18:14:02 105

原创 LeetCode 56. Merge Intervals

Given a collection of intervals, merge all overlapping intervals.For example,Given [1,3],[2,6],[8,10],[15,18],return [1,6],[8,10],[15,18].题意:给定一系列的区间,如果两个区间有重复就合并,比如[1,3]、[2,6]合并成[1,6]。拿

2018-01-25 15:44:55 128

原创 LeetCode 53. Maximum Subarray

题意:找出一个数组中某一段累加和最大For example, given the array [-2,1,-3,4,-1,2,1,-5,4],the contiguous subarray [4,-1,2,1] has the largest sum = 6.一看到题目,这不就是算法导论的股票问题么...好吧,按着分治策略写,写着写着发现还是有点麻烦啊。。。虽然思想不难,这就是个easy题...

2018-01-12 21:55:45 234

原创 LeetCode 48. Rotate Image

题意:将一个二维数组进行如下变换:Example 1:Given input matrix = [ [1,2,3], [4,5,6], [7,8,9]],rotate the input matrix in-place such that it becomes:[ [7,4,1], [8,5,2], [9,6,3]]Exampl

2018-01-12 19:37:17 136

原创 LeetCode 39. Combination Sum

题意如下:一个set然后这道题是用回溯法解决。为了了解回溯首先自己实现了一下八皇后- -然后这个题目思路是有的,首先排序,然后比如这个例子就第一次循环,如果比target小就递归,直到大于target就在该次一直循环直到发现无法达到target就回溯。为了防止会出现重复,后一次递归的初始值应该等于上一次循环的当前值,比如 for (int i = n; i class Solution

2018-01-08 20:40:06 94

原创 LeetCode 35. Search Insert Position

题意:如果数组里有target,返回index;如果没有,返回它应该处于的地方的Index.代码如下:class Solution { public int searchInsert(int[] nums, int target) { int start = 0, end = nums.length - 1; while(start <= end) {

2017-12-30 20:12:43 103

原创 LeetCode 34. Search for a Range

一个升序数组,找出与target相等的元素的位置,会有两个。For example,Given [5, 7, 7, 8, 8, 10] and target value 8,return [3, 4].如果找不到就返回[-1, -1].时间复杂度要求O(logn)class Solution {    public int[] searchRange

2017-12-29 19:44:28 111

原创 LeetCode 33. Search in Rotated Sorted Array

题意:原本是一个升序数组,从某一个节点开始该节点以及后面的元素旋转到了数组的前部,也就是该数组成为了两段升序数组(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).最简单的遍历程序...: class Solution { public static int search(int[] nums, int target) ...

2017-12-26 09:36:34 115

原创 LeetCode 31 Next Permutation

题意:123 132213231312321题目的意思是,从上面的某一行重排到期下一行,如果已经是最后一行了,则重排成第一行。先从后往前看,直到某一个值大于它的前一个值,这个值(位置表示为length)的前一个值就是要替换的。接下来在length-1之后的所有比length-1的值大的值中找出最小的,二者交换。这个过程由于后面一定是递减的,所以从最后开始找第一个

2017-12-24 22:41:09 116

原创 LeetCode 26 Remove Duplicates from Sorted Array

这是一个比较简单的题目,一个数组去除重复元素然后返回新数组的长度。思路很简单,唯一需要注意的就是不能有额外的空间。本来不是很理解什么叫额外的空间,在这里谨记一下:以此题为例,原本的数组可以进行改变,不算额外空间,但不能有多的数组出现,看代码理解:class Solution { public int removeDuplicates(int[] nums) { if(n

2017-12-24 17:00:05 139

原创 LeetCode 16 3Sum Closest

这题与上一题很类似,首先确定依然是用双指针,由于是最近的所以不用担心重复的问题,去掉了重复跳过的代码。我的思路:考虑到既然是最接近target的值,那么可以转换为target - sum的绝对值最小。所以我将这个最小值初始化成min。最后输出的是三个数的sum所以初始化了result = 0.接下来考虑我们的sum与target的差值的绝对值如果小于我们初始化的min那么就将该值赋给min,并且此

2017-12-20 15:28:04 101

原创 LeetCode 15 3Sum

看到这个题目,首先我有两种思路,一种同Two Sum 一样使用哈希map的方式,以第一个元素为基准,后面再当做Two Sum来做。后来发现这种解法由于不能直接的表示我们这个数组的下标,从而难以实现对重复元素的跳过。另外哈希map的优势在于不需要进行排序,而此问题肯定难以达到O(nlgn)的复杂度,所以放弃了这种思路。另外就是用双指针的做法。因为进行排序后的数组确定一个元素作为基准后,另外两个就

2017-12-20 11:04:15 106

原创 LeetCode 11 Container With Most Water

首先想到的还是暴力解决方法,双循环如下:class Solution {    public int maxArea(int[] height) {        int i = 0, j = 0;        int maxArea = 0;        for(i = 0; i             for(j = i+1; j

2017-12-14 13:40:33 106

原创 LeetCode 1 Two Sum I

读完题首先想到的就是两层遍历法,但是显然时间复杂度太高,是O(N^2),不符合要求,于是就应该想如何降低复杂度,首先应该想将逐个比较转变为直接查找,即首先计算出 target与当前元素的差,然后在序列中寻找这个差值,这样首先就把问题简化了,而寻找的过程可以先对序列进行快排,然后二分查找,这样整体的复杂度就降低为 O(N*logN) 了;查找最快的方法是利用一个 map容器存储每个元素的索引,这样取

2017-12-08 20:43:16 165

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除