>

自由软件精神——“自由、开放、分享”。自由软件自诞生之日起,就秉承了学术自由的思想,信奉科学无国界,知识应该全人类共享。

ubuntu精神——人道待人,天下共享连接人人的信念。具有 ubuntu 精神的人心胸开阔,乐于助人,见贤思齐而不忌妒贤能......

文章, 第9页

leetcode刷题 Search in Rotated Sorted Array

如果A[mid]大于等于A[low],则[low,mid]递增在这上面用二分查找,反正[mid,high]递增,用二分在A[mid]~A[high]二分!MS面试,SB的我少了3个==!

标签:

leetcode刷题 Search for a Range

没啥说的,就考二分!left=0,right=len(A)-1;while(left<=right){mid=(left+right)/2;cmp(A[mid],target)},然后找到以后就一直向两边扩展即可!

leetcode刷题 Trapping Rain Water

DP啊!大哥,下次能够一下子想到了吧!就是memoize的变种! 每个柱子的积水=min(它左边最高的柱子-它右边最高的柱子)-自己柱子的高度 他左边和右边最高的柱子用个数组来记录下,然后求和就可以了!

标签:

leetcode刷题 Unique Binary Search Trees

反正求数目的题目肯定都是让你推导公式的!要么就是递推公式f(n)和f(n-1),f(n-xxx)关系式,类似fib!这种题目很难直接求解出函数表达式的!如果可以的话,那出题的人肯定是个数学家!此外,推导的时候要学会抽象!例如n=4:f(4)=f(0)*f(3)+f(1)*f(2)+f(2)*f(1)+f(3)*f(0),就这么简单!管他是不是一维DP!哦,忘记说了记得重构程序的冗余代码(合并边界)!

标签:

leetcode ZigZag Conversion

主要是熟悉下enumerate(collection),reduce(lambda x,y: x+y, collections),然后就是代码要写得很优雅!

标签:

Linked List Cycle

尼玛!下次我再手写不对我就去死!

标签:

leetcode刷题 Linked List Cycle II

其实非常简单,链表的问题多用快慢指针搞定!faster=slower=head while faster and faster.next: faster=faster.next.next slower=slower.next if faster==slower: return True 这就是找到环的唯一条件!要熟啊!此时要找到该环的第一个交叉节点,再设置2个指针一个head,一个是相遇处的slower指针,同时走下去,下次相遇的地方就是环的交叉点!

标签:

leetcode刷题 Populating Next Right Pointers

就是层序遍历,一个队列搞定,queue = collections.deque([root]), while len(queue): node=queue.popleft() do_with(node) queue.append(node.left) queue.append(node.right)!此外,deque没有top函数,只有自己用下标0来取出首个元素!此外 pow2的写法,要熟,反之就x 与操作 (x-1)==0即可判定!

标签:

leetcode刷题 Implement strStr()

就是求字符串的子串!python里find返回-1表示未找到,用index则抛出异常表示未找到子串!而取出子串用[found_index:]即可!字串里是没有substr函数的哈!

标签:

leetcode刷题 Gray Code

没啥说的,对于十进制数x,其gray code位(x>>1) ^ (x)!就这么简单!此外python里array=[0]*n就是分配n个元素的一维数组,[[0]]*n就是n个元素的二维数组!要熟!

标签:

leetcode刷题 Add Two Numbers

就是链表的操作:while(node): do_with_node_val node=node.next没啥说的!注意细节即可!

标签:

leetcode刷题 3Sum

转换位two sum问题,[1,2,3] in [[3,2,1],[1,2,3]] == True!

标签:

leetcode刷题 atoi

就是细节多点!其实还好!先去掉无意义的输入例如空格,long(str)就直接转换位整数,然后看是否越界!

标签:

leetcode刷题 Pow

看似简单实则不好做!用递归会超时! 看透这个例子就没有问题了: pow(x,11)=pow(x,0x1011)=x * x^2 * x^8!!!

标签:

leetcode刷题 Sqrt

主要是考查二分法和牛顿迭代法。 二分要熟,就几行代码: start=0, end=x while(start<=end): mid=(start+end)/2 if f(mid) ==0: return mid else if(f(mid) >0): start=mid+1 else end=mid -1 return end 牛顿迭代法也没啥说的!就是导数而已。还有一个细节就是(x+.0)/2。当心!

标签:

leetcode刷题 Same Tree

没啥说的,就递归!

标签:

leetcode刷题 Integer to Roman

查找表!没啥说的!多多重构代码,会非常精简的!

标签:

leetcode刷题 Two Sum

没啥说的,先排序,然后从数组两端求和来找! enumerate和sort要很熟悉! indexed_data=[(i,j) for i,j in enumerate(num)] indexed_data.sort(lambda x,y: cmp(x[1],y[1]))

标签:

leetcode刷题 Word Ladder

1、坑爹啊!提交好多次都提示time limit exceed!结果修改好久才发现是需要优化2行代码! 2、就是BFS!没啥说的,蕴涵了DP的思想!最短路的DP求法类似!下次遇到什么路径的一律优先使用DP! 3、如果需要递归,考虑使用队列和stack来改写! 4、collection的deque,append是队尾加元素,popLeft是删除队首元素!

标签:

leetcode刷题 Triangle

思路没啥说的,开个同维度的数组存放sum,然后取最后一维的min。

标签:

« 1 2 3 4 5 6 7 8 9 10 » 返回顶部