leetcode总结
huashuiicy
这个作者很懒,什么都没留下…
展开
-
leetcode 【287 Find the Duplicate Number】【Python】
本题同样让我们找数组中重复的数字,但是给出了很多限制条件。其实leetcode好像对一些限制条件,无法做出判断,我们还是自我严格要求的好哦!首先,第一个不可以改变数组,其实这个就是限制了我们排序,如果排序,然后再遍历一下很快就能找到重复的数字了,时间复杂度O(nlogn),空间复杂度O(1); 其次,空间复杂度O(1),这个限制了我们使用hash查找,因为hash时间复杂度是O(1),但是空间要O原创 2016-09-09 11:19:30 · 2475 阅读 · 0 评论 -
leetcode【39+40+216+377 Combination Sum 相关】【python】
39Combination Sum是说让我们在给定数组C中找到所有的组合,使得组合中数字的和是target值。并且组合里的数字可以重复,也就是不限制C中每一个数字的使用。 这明显是回溯啦,大家记得让你判断有多少种呢就是动态规划,一旦让我们写出全部的组合那就是回溯。 回溯就是一直加进去数,满足条件就存下来,不满足呢就回退一步。代码如下。注意backtracking函数,利用for可以实现回溯。还要原创 2016-12-13 16:38:48 · 1643 阅读 · 0 评论 -
leetcode【268 Missing Number】【Python】
给出从0到n的n+1个数字中的n个数,找到缺失的那个数字。第一想法就遍历就可以了,但是注意不要被它给的例子所迷惑,数组不一定是排好序的,所以需要先排序。class Solution(object): def missingNumber(self, nums): """ :type nums: List[int] :rtype: int原创 2016-09-08 17:22:13 · 2717 阅读 · 0 评论 -
leetcode【217+219 Contains Duplicate I+II】【python】
这两道题都是让我们找到数组中是否有重复的数字,这种查找题首先就要考虑hash查找了,毕竟快。 217这道直接用dict就好,出现超过两次直接返回即可。class Solution(object): def containsDuplicate(self, nums): """ :type nums: List[int] :rtype: bool原创 2016-09-08 10:33:49 · 644 阅读 · 0 评论 -
leetcode【169 Majority Element】【Python】
本题让我们找到数组中的majority元素,该元素是在数组中出现了超过n/2次的数。n是数组长度。并且leetcode允许我们假定数组不是空的,并且这样的元素肯定存在。这样省去了很多特殊输入的问题。该题很简单,查找就用hash表就可以了,在python中也就是dict(),key是num,value是出现的次数。还是要注意一种特殊就是数组长度为1时,此时直接返回该值即可。class Solution原创 2016-09-08 09:48:22 · 799 阅读 · 0 评论 -
leetcode 【238 Product of Array Except Self】【Python】
本题给定一个数组,要求我们返回一个同等大小的数组,其中每个output[i]的值是除了nums中i位置的其他数字的乘积。第一想法是除法,但是不可以用啦 第二想法是两次循环,当然时间复杂度也是太高 继续思索可以发现每个位置其实都是它前面所有数的乘积再乘上它后面所有数的乘积。按照这种想法建立返回数组,首先该数组中从第二个数开始每个数都是前面数的乘积,这样完成了第一步,其实此时数组中的最后一个数已经是原创 2016-09-06 18:07:23 · 1248 阅读 · 0 评论 -
leetcode【283 Move Zeros】【python】
是让我们将给定数组里的0都放到数组的末尾,然后还要保持非0元素的顺序不变。也不可以复制数组,尽量少操作次数。最初想的是遇到为0的就pop,然后在尾部append,但是这样如果外面的循环是for的话,那么每次i都增加了,可能你删除第一个之后新成为第一个的原第二个还是0,就没有删除。那么用while的话,一旦后几个全是0的时候就跳不出while了,所以time limited。重新考虑,这次考虑互换,想原创 2016-09-01 21:55:22 · 1200 阅读 · 0 评论 -
leetcode【1+167 Two Sum 系列】【python】
1 Two Sum找到给定序列中两个数字的和是指定target,返回的是个list,包含两个数的index,从0开始。第一反应肯定是遍历,毕竟是数组题,遍历需要两遍,才能找到和,那么肯定是要优化的了。 因为是查找,所以可以想到hash,查找只需要O(1)复杂度。那么维持一个dict,其中key是数值,value是数值对应的下标。最初的想法是从数组中每取到一个数字nums[i],判断nums[i]在原创 2016-09-01 19:31:36 · 3577 阅读 · 1 评论 -
leetcode--array总结
leetcode–array总结leetcode中array部分共有76道题,这是我的第二次刷题总结,按照acceptance从高到低依次总结每题。给出思路和代码。基于python语言,由于我python语言功底有限,也是刚上手,所以遇到相应的知识也进行一下总结。并且由于一刷用的C语言,所以部分题会贴上C语言部分代码。 在我看来,array这部分其实也都是在考其他算法,array本身是没什么难度的原创 2016-09-01 16:55:22 · 474 阅读 · 0 评论 -
leetcode【121+122+123 best time to buy and sell stock】【python】
我们先拿出来前三道题,因为他们都是array中的题目。这是leetcode种经典的一系列题,涉及到动态规划和贪心算法。按照我的理解,贪心是满足当前条件的最优值我们就将它最为最优解,也就是大家说的局部最优值,而动态规划是要记录下来达到当前最优解的所有途径,由局部一步步得到全局最优。这几道题都是给你一个股票每日价格表,让你得到不同条件下能挣的最多的钱。 121题是只允许买卖一次,要保证卖的时间晚于买的原创 2016-09-12 21:04:35 · 3501 阅读 · 0 评论 -
ZigZag Conversion
把字符串按照zigzag的规律排序,再依次返回每一行。看着就像是有数学规律。就是分成一整块一整块的,大小是cycle=2*numRow-2,每一整块有两列,第一列的每个值在s中的序号是跟行号有关,i是行号,就是i+cycle; 第二列的每个值在s中的序号可以如下计算: 如果对应第一列的序号是j的话,那么j+cycle是下一块中对应位置的序号,与这一列的顶差了i个,得到序号的话就是j+cycle-i原创 2017-05-01 16:08:04 · 325 阅读 · 0 评论