>

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

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

加标签的文章 algorithm

python heap

from heapq import *; heappush(h,value); heappop(h);此外,默认是最小堆,用于找最大的k个数,要用于找最小的k个数,需要对push的数字取反,pop的时候再取反。

求解无重复且各位递增的数

DP产生数+二分搜索!

leetcode刷题 Sell Stock III

还是DP,不过是针对特定点i,看它过去收益的最大值和未来收益的最大值,用2个dp数组搞定计算截止i为止的历史最大收益,以及从i开始的未来最大收益!

leetcode刷题 Longest Consecutive Sequence

就考个hash找数字问题!

leetcode刷题 First Missing Positive

注意,python里这样写是错误的,A[i],A[A[i]-1]=A[A[i]-1],A[i],因为A[i]已经交换了!正确的做法是tmp=A[i],A[i],A[tmp-1]=A[tmp-1],A[i],此外,对于这种交换的题目,类似MS的交换颜色,都可以按照这样的模式:while i

leetcode刷题 Search a 2D Matrix

没啥说的!到处都出现过!

leetcode刷题 Swap Nodes in Pairs

指针太容易出错了!尼玛面试真遇到,真不好一次写对!

leetcode刷题 Single Number II

由于序列中除了那唯一的一个数之外所有的数都是三个三个出现的。如果把这些数都转换成二进制,那么二进制数中1的那些位会连续出现三次,我们可以利用这个思路来解题。比如:3331222转换成二进制为:11 11 11 01 10 10 10。在第1位上,1出现了4次。第2位上,1出现了6次。那么我们把每一位上为1的个数mod 3剩下的1就是我们所求的数,比如这个例子:4 mod 3 = 1; 6 mod 3 = 0。这样剩下的二进制位为:01。那最后所求的数就是1了。

leetcode刷题 Single Number

一条代码搞定!reduce(lambda x,y: x^y,A)。

不需要扫描数组两遍啊!从前向后扫描记录当前price和历史的最小price差值即可!

基数排序

非常优雅的实现!结合了计数排序(桶排序)的思路,利用元素为linklist的数组实现!例如0-9的数字对应数组里第0-9个元素,这些链表里存放了某位为特定数字的所有data集合。

标签:

leetcode刷题 Search for a Range

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

返回顶部