恒河沙无数

面壁十年终破壁,难酬蹈海亦英雄

Course Schedule

leetcode第207题,给定一组课程的互相的优先关系,判断是否可以满足课程上完的要求。 这个问题很典型是拓扑排序,抽象出来就是每个课程都是一个节点,题目的意思就是经过拓扑排序之后去掉节点后图中是否还有剩余,如果有说明图中存在环结构。 拓扑排序思想很简单,图中节点有优先关系,将入度为零的节点...

2016-08-19 17:39:45

阅读数 184

评论数 0

Palindrome Partitioning

leetcode第131题,要求分割一个给定的字符串,要求分割后的字符串都是回文串,列举出所有可能。 这道题确实是一道典型的回溯题目,首先理解对题意,是分割字符串,而不是在字符串中找出所有的回文子串,因此这样难度会降低不少。 分析问题,第一步,递归出口条件,应当是所有字符串都用完了,就意味着分...

2016-08-19 09:14:45

阅读数 118

评论数 0

Combination Sum

leetcode第39题,回溯题,要求用给定集合中的数字使得相加等于目标数字,其中给定集合中的数字可以无限次使用。 注意,这里题目要求所有数字都是正数,这就保证了递归的出口条件。 分析问题,首先,递归的出口条件有两个,一个是相加出现了目标和,那么就加入了结果列表,返回。另外,由于给定集合都是正...

2016-08-17 10:58:45

阅读数 113

评论数 0

Combinations

leetcode第77题,排列组合题升级版,这个题的总体难度不太大,但是鉴于使用的是python,如果不剪枝,就一定会超时。 首先分析问题,先要按顺序挑选出开头的元素,此时所给集合中的所有元素均可以添加,然后把加上了开头元素的列表向下递归,添加第二个元素,第二个元素的要求应该是第一个元素之后的所...

2016-08-17 10:14:34

阅读数 127

评论数 0

Remove Duplicates from Sorted Array II

leetcode第80题,这个题目是之前第26题的升级版,在原来的基础上要求可以允许两个重复的情况出现。 其实这样也并不是很苦难,只是在原来的基础上要多增加一个计数器,来计数出现重复数字的个数,一旦重复计数超过两个,就当做一个来看待,最后当再次出现不重复情况的时候,这个计数器就归零。 clas...

2016-08-17 08:24:03

阅读数 126

评论数 0

Sum of Two Integers

leetcode第317题,位运算题,在不使用加法和减法的情况下运算加法。 很明显就是一个位运算,首先这样分析,位运算就这么几种,与、或、非、异或、移位。选择哪一种是关键。首先加法肯定要所在位的数值相加,异或可以完成这个功能,但是异或没有进位怎么办,用与操作就可以获取进位值出现在哪一位。但是进位...

2016-08-16 15:26:30

阅读数 161

评论数 0

Ransom Note

leetcode第383题,这道题比较简单,其实就是查字典问题,字典中必须有足够多的字母来满足写信的要求,同时还要具备应该有的字母。 直接上代码吧。 class Solution(object): def canConstruct(self, ransomNote, magazine)...

2016-08-16 09:58:17

阅读数 96

评论数 0

Search for a Range

leetcode第34题,二分查找,由于限制住了复杂度为O(nlogn),因此线性查找肯定不行了,必须使用二分。 二分查找算法原理不难,但是在实际编码的过程中边界是需要好好处理的一个地方,另外,二分查找后只找出了一个目标元素,需要做的就是在这个元素的基础上向两边继续搜索是否还有相等的元素即可。 c...

2016-08-16 09:36:31

阅读数 108

评论数 0

Path Sum

leetcode第112题,二叉树搜索问题,计算从根到叶子节点路径之和与目标数比较。 这道题难度不大,只要是深搜就可以了,废话不说,直接上代码吧。 # Definition for a binary tree node. # class TreeNode(object): # def __...

2016-08-15 09:59:01

阅读数 109

评论数 0

Restore IP Addresses

leetcode第93题,计算有效的IP地址。 分析问题,首先什么是有效的IP,这里有效是广义的,也就是凡是符合IP的要求的都算,不考虑特殊IP地址的限制。这样有效IP的要求就放宽了不少,首先IP应该有四级,每一个的数字都应该在0-255之间,还有一点比较隐蔽,那就是0单独出现时正确的,但是如“...

2016-08-15 09:12:08

阅读数 105

评论数 0

Partition List

leetcode第86题,分割链表,将小于指定数字的部分和大于等于指定数字的部分放在链表两边。 这个题难度不大,很简单的考虑思路就是遍历整个链表,凡是小于指定数字的加入一个新的链表中,其余的加入另一个链表中,最后合并两个链表就可以了。 这里要注意两种极端情况。一是如果整个链表都大于指定数字,一...

2016-08-10 09:32:37

阅读数 101

评论数 0

Invert Binary Tree

leetcode第226题,反转二叉树,这个题看上去有点难,但是实际上很简单。反转二叉树,无非就是交换所有的左孩子与右孩子,只要对每一个节点的子节点都进行一轮这样的操作就可以了,不过要注意递归的出口条件,那就是到达叶子结点,也就是既没有左孩子也没有右孩子,有时候有的子节点可能是空的,因此出口条件是...

2016-08-10 08:51:19

阅读数 95

评论数 0

Search Insert Position

leetcode第35题,典型的二分查找,这里不但要查找存在的元素,对于不存在的元素还要找出其插入的位置。 很明显,使用二分查找,二分查找可以自然地返回不存在元素插入的位置。 我的代码有一些不完备,加了一点补丁。 n = [1,2,3,10,22] t = 4 def searchInser...

2016-08-09 16:07:22

阅读数 145

评论数 0

Pascal's Triangle II

leetcode第119题,这个题目是杨辉三角的升级版,要求在o(k)的空间复杂度内生成某一行的杨辉三角。 杨辉三角的一般生成方法都是通过上一行来计算下一行,但是现在要求在指定行原地操作,难度增大了很多,需要找到规律。规律是,从后向前,依次加前面那一项。 这里要注意一些细节,特别是下标的处理。...

2016-08-09 15:41:40

阅读数 110

评论数 0

Evaluate Reverse Polish Notation

leetcode第150题,逆波兰表达式,南大机试题,要是早点会这道题就好了。 思路比较简单,就是用栈来模拟运算的过程,凡是遇到符号就取出栈中的两个操作数,然后执行运算,运算结果再压回栈中。 pythop写的话会有一个坑,那就是负数的除法问题,有一组数据运算6/(-132)的时候系统默认结果是...

2016-08-09 11:15:40

阅读数 104

评论数 0

Compare Version Numbers

leetcode第165题,这道题没有什么特殊的算法,就是考察能否对于所出现的情况考虑周全。注意一下几个点即可。 1、版本的长度不一致怎么处理? 2、版本中出现了0xx怎么处理? 面对以上两个问题,尤其是第一个问题,我的思路是长度不一致,直接用0补全就好了,然后按照要求正常比较即可。出现0x...

2016-08-08 17:18:44

阅读数 105

评论数 0

Climbing Stairs

leetcode第70题,简单题,如果按照题意就用递归求解没有问题,但是递归的话大数据过不了,这时候就需要找规律了,不难发现结果就是斐波那契数列,因此可以用非递归实现斐波那契,这样就可以提升速度了。 递归的主要思路是,当只有一个台阶的时候,只有一种走法,两个台阶的时候有两种走法,两个台阶以上的时...

2016-08-08 15:17:52

阅读数 105

评论数 0

Sum Root to Leaf Numbers

leetcode第129题,树的深搜问题,要求把从根节点到叶子节点上所有的数都攒成一个整数,然后加起来。 很明显是深度优先搜索,不过由于我们需要要把路径上的数攒成一个整数,因此在搜索的同时还要做这个工作,当搜索到叶子节点的时候,这个数就攒完了,加入到数组列表中即可。 # Definition ...

2016-08-08 14:48:04

阅读数 114

评论数 0

Contains Duplicate II

leetcode第219题,寻找重复元素的升级版,这次不仅要找出重复元素,而且下标距离还不能超过给定值k。 基本思路同样是使用hash,为了优化,我们在遇到重复的情况的时候,不断地检查其下标距离,只要满足条件就立刻返回True,否则就更新hash表中的值。 class Solution(obj...

2016-08-08 11:15:01

阅读数 104

评论数 0

Contains Duplicate

leetcode第217题,寻找重复元素,只要存在重复元素就返回True。 这个题就很简单了,直接用hash就可以了,没什么难度。 class Solution(object): def containsDuplicate(self, nums): "&quo...

2016-08-08 11:11:47

阅读数 82

评论数 0

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