自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 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 280

原创 leetcode【39+40+216+377 Combination Sum 相关】【python】

39Combination Sum是说让我们在给定数组C中找到所有的组合,使得组合中数字的和是target值。并且组合里的数字可以重复,也就是不限制C中每一个数字的使用。 这明显是回溯啦,大家记得让你判断有多少种呢就是动态规划,一旦让我们写出全部的组合那就是回溯。 回溯就是一直加进去数,满足条件就存下来,不满足呢就回退一步。代码如下。注意backtracking函数,利用for可以实现回溯。还要

2016-12-13 16:38:48 1548

原创 leetcode【121+122+123 best time to buy and sell stock】【python】

我们先拿出来前三道题,因为他们都是array中的题目。这是leetcode种经典的一系列题,涉及到动态规划和贪心算法。按照我的理解,贪心是满足当前条件的最优值我们就将它最为最优解,也就是大家说的局部最优值,而动态规划是要记录下来达到当前最优解的所有途径,由局部一步步得到全局最优。这几道题都是给你一个股票每日价格表,让你得到不同条件下能挣的最多的钱。 121题是只允许买卖一次,要保证卖的时间晚于买的

2016-09-12 21:04:35 3446

原创 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 2403

原创 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 2666

原创 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 611

原创 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 771

原创 leetcode 【238 Product of Array Except Self】【Python】

本题给定一个数组,要求我们返回一个同等大小的数组,其中每个output[i]的值是除了nums中i位置的其他数字的乘积。第一想法是除法,但是不可以用啦 第二想法是两次循环,当然时间复杂度也是太高 继续思索可以发现每个位置其实都是它前面所有数的乘积再乘上它后面所有数的乘积。按照这种想法建立返回数组,首先该数组中从第二个数开始每个数都是前面数的乘积,这样完成了第一步,其实此时数组中的最后一个数已经是

2016-09-06 18:07:23 1210

原创 leetcode【283 Move Zeros】【python】

是让我们将给定数组里的0都放到数组的末尾,然后还要保持非0元素的顺序不变。也不可以复制数组,尽量少操作次数。最初想的是遇到为0的就pop,然后在尾部append,但是这样如果外面的循环是for的话,那么每次i都增加了,可能你删除第一个之后新成为第一个的原第二个还是0,就没有删除。那么用while的话,一旦后几个全是0的时候就跳不出while了,所以time limited。重新考虑,这次考虑互换,想

2016-09-01 21:55:22 1123

原创 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 3527 1

原创 leetcode--array总结

leetcode–array总结leetcode中array部分共有76道题,这是我的第二次刷题总结,按照acceptance从高到低依次总结每题。给出思路和代码。基于python语言,由于我python语言功底有限,也是刚上手,所以遇到相应的知识也进行一下总结。并且由于一刷用的C语言,所以部分题会贴上C语言部分代码。 在我看来,array这部分其实也都是在考其他算法,array本身是没什么难度的

2016-09-01 16:55:22 446

空空如也

空空如也

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

TA关注的人

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