随笔分类 -  leetcode

摘要:这道题为简单题 题目: 思路: 这个题比较简单,就是遍历整个数组就行了,但是我的代码太复杂,在网上找到了一个更简单的做法。 代码: 大神思路和代码: 阅读全文
posted @ 2017-12-28 20:57 唐僧洗发爱飘柔 阅读(131) 评论(0) 推荐(0)
摘要:这道题为简单题 题目: 思路: 这个题用DP还是比较简单的,主要找到状态转换方程就比较容易了。用列表a来定义每一步的最优答案,从而找到转移方程 a[i] = min(a[i-2] + cost[i], a[i-1] + cost[i]) 代码: 阅读全文
posted @ 2017-12-26 14:15 唐僧洗发爱飘柔 阅读(192) 评论(0) 推荐(0)
摘要:这道题为中等题 题目: 思路: 这道题思路还是比较简单,最开始我没仔细看题目要求,他的列表中没有重复项,结果导致代码超时。这个题主要用另外一个列表来判断这个元素是否被遍历,如果被搜索过就将其值置为1,否则计数值num+=1,每遍历一个元素就比较一次max_num. 代码: 阅读全文
posted @ 2017-12-26 11:33 唐僧洗发爱飘柔 阅读(281) 评论(0) 推荐(0)
摘要:这是一道简单题 题目: 思路: 这道题挺简单的,主要是需要理解题目,用一个while循环,遇见1就把索引加2,否则加1,如果在循环中碰见索引等于长度-1,那么就返回True,否则循环结束就返回False 代码: 阅读全文
posted @ 2017-12-26 09:40 唐僧洗发爱飘柔 阅读(121) 评论(0) 推荐(0)
摘要:这道题为简单题 题目: In a given integer array nums, there is always exactly one largest element. Find whether the largest element in the array is at least twic 阅读全文
posted @ 2017-12-25 11:24 唐僧洗发爱飘柔 阅读(156) 评论(0) 推荐(0)
摘要:这道题为简单题 题目: 思路: 这个题思路挺简单的,主要的就是先把数字拆分,然后再循环判断 代码: 阅读全文
posted @ 2017-11-25 22:35 唐僧洗发爱飘柔 阅读(154) 评论(0) 推荐(0)
摘要:这道题为困难题 题目: 思路: 这个题最核心的部分就是假设l,r之间有一个数是最后爆的。假设dp[l][r]表示为长度区间l,r的最大得分数(不包括l和r) 当k == 2时,l = 0, r = 2; l = 1, r = 3; …… 当k == 3时,l = 0, r = 3; l = 1, r 阅读全文
posted @ 2017-10-08 19:40 唐僧洗发爱飘柔 阅读(172) 评论(0) 推荐(0)
摘要:这道题为中等题 题目: 思路: 1、我最开始的思路:利用DFS,把它当成一个二叉树,但是结果超时,很疑惑,在网上查找,好像是没有进行尾递归优化,具体的尾递归概念大家可以百度一下 2、还是使用DFS,但是利用字典存储中间值 3、利用DP,利用两个字典,字典的键为一个数,键值表示为到达该数有多少种途径, 阅读全文
posted @ 2017-10-08 12:17 唐僧洗发爱飘柔 阅读(161) 评论(0) 推荐(0)
摘要:这道题为中等题 题目: 思路: 我的:DP,状态转换方程为 dp[i] = dp[p] + i / p,其中i为当前索引,p为i的因数,这个还是很容易想到的,比如i=8,p为4时,dp[8]就等于dp[4]+8/4,其中8/4可以理解为把i=4是的情况进行复制再粘贴的数量。但是这样的话复杂度比较高, 阅读全文
posted @ 2017-10-05 17:53 唐僧洗发爱飘柔 阅读(231) 评论(0) 推荐(0)
摘要:这是一道中等题 题目: 思路: 定义一个二维数组并初始化为1,由于只能往因此,我们有以下状态方程:假设到达点(i,j)的路径数量表示为P [i] [j],很容易得出结论:P [i] [j] = P [ i-1] [j] + P [i] [j-1],由于有边界条件的限制,我们在遍历时,索引需要从1开始 阅读全文
posted @ 2017-09-29 22:57 唐僧洗发爱飘柔 阅读(80) 评论(0) 推荐(0)
摘要:这道题为简单题 题目: 思路: 这个题和之前两三个题思路差不多,遍历列表元素,把该元素的绝对值当作索引再去查询,如果查询结果大于等于0,那么证明没有元素访问过这儿,那么就把它乘上-1,否则当它小于0,证明之前有元素访问过,那么就返回该索引值的绝对值 代码: 阅读全文
posted @ 2017-09-27 22:48 唐僧洗发爱飘柔 阅读(92) 评论(0) 推荐(0)
摘要:这道题为简单题 题目: 思路: 我的思路:定义一个列表ans并初始化,遍历列表nums,并把nums作为a的索引值,每次加1,最后列表生成器生成ans中==2的索引值 大神的:同样定义一个列表,遍历列表nums,并把x的绝对值-1作为nums索引值判断是否大于0,如果大于0那么就表示,这个数目前只出 阅读全文
posted @ 2017-09-26 16:50 唐僧洗发爱飘柔 阅读(105) 评论(0) 推荐(0)
摘要:这是一个简单题 题目: 思路: 我的:这个题和Pascal's Triangle的思路是一样的,只不过这个题求的是其中的一层,代码差不多只不过这个题索引是从0开始的 大神的: 用的是列表生成器和一个zip函数 代码:、 我的: 大神: 阅读全文
posted @ 2017-09-26 15:11 唐僧洗发爱飘柔 阅读(94) 评论(0) 推荐(0)
摘要:这是一个简单题 题目: 思路: 我的代码:主要是运用了一个想法,其实它的每次层都可以由上一层得到,如上如所示,具体方法就是把上一层列表前后加0再相加。我最开始就把每一层的0留着,遍历二维列表将他们相加然后添加到下一层的列表里面去,最后再把0删去。 大神:思路差不多,但是他的代码方法比较好,利用了ma 阅读全文
posted @ 2017-09-26 15:06 唐僧洗发爱飘柔 阅读(125) 评论(0) 推荐(0)
摘要:这道题为中等题 题目: 思路: 个人起初并没有读懂题目,以为给你的是一个区间,结果是一个列表,列表里的每一个数代表他放毒的时间点。这个题还是挺简单的,遍历列表,每次和前一个元素比较,如果大于中毒时间,那么总时间就加上duration,否则总时间就加上两个元素的差,最后返回num+duration 代 阅读全文
posted @ 2017-09-25 22:51 唐僧洗发爱飘柔 阅读(87) 评论(0) 推荐(0)
摘要:这是一个中等题 题目: 思路: 我是创建一个新列表,列表最开始按一个最低,一个最高排列,如果p==k-1了,那么就停止,把剩下元素依次排序,比如n=10,k=3,我就先排1,然后把10加进去,这时p=1,再把2加进去,这时p=2,满足了p=k-1,然后把剩下元素按2,3,4,5,6,7,8,9排序加 阅读全文
posted @ 2017-09-25 08:38 唐僧洗发爱飘柔 阅读(120) 评论(0) 推荐(0)
摘要:这道题为简单题 题目: 思路: 我的思路:先给数组排序,然后遍历两个数组,如果相同索引元素不相等,first=i,直到最后一次不相等时,second=i.最后返回second-first+1,最开始初始化为-1和-2是为了方便计算如果nums数组一直都是递增的情况 大神:最开始我也是跟它想法一样,但 阅读全文
posted @ 2017-09-25 00:08 唐僧洗发爱飘柔 阅读(120) 评论(0) 推荐(0)
摘要:这道题为简单题 题目: 思路: 利用栈,遍历列表ops,如果是数字就存入列表a,sum加上数字,如果是C,判断a是否还有数字,有就删除,如果是D,判断a是否还有数字,有就把num加上2倍a的最后一个数并将2倍之和的数添加到a中,如果是+,判断a是否还有两个数,有就将num加上那两个数,并将后面这两个 阅读全文
posted @ 2017-09-24 23:18 唐僧洗发爱飘柔 阅读(170) 评论(0) 推荐(0)
摘要:这道题为中等题 题目: Given a time represented in the format "HH:MM", form the next closest time by reusing the current digits. There is no limit on how many ti 阅读全文
posted @ 2017-09-24 22:47 唐僧洗发爱飘柔 阅读(279) 评论(0) 推荐(0)
摘要:这道题为简单题 题目: 思路: 我的思路:创建字典,遍历列表,如果nums[i] - k存在于字典中,如果存在那就再判断nums[i]是否存在于a[nums[i] - k],如果nums[i]还没有存在字典中,那么就创建键值对,然后把nums[i] - k和nums[i] 的键值分别添加对应的值(n 阅读全文
posted @ 2017-09-23 12:55 唐僧洗发爱飘柔 阅读(137) 评论(0) 推荐(0)