leetcode解题总结(持续更新)

查找搜索:

树型:DFS或BFS(不够+状态存储,缩短时间)(如数位DP,就是DFS+状态存储)          【其他:B树,B+树】

链表:多用two pointer

例子: https://leetcode.com/problems/substring-with-concatenation-of-all-words/

无序数组:hash映射(O(1),map,set等)                                                                                  【其他:并查集,字典树tire】

例子: https://leetcode.com/problems/substring-with-concatenation-of-all-words/

有序数组:二分查找

例子:

https://leetcode.com/problems/search-insert-position/

https://leetcode.com/problems/search-for-a-range/

https://leetcode.com/problems/search-in-rotated-sorted-array/

【其他:棋牌类游戏博弈树:极大极小值算法,alpha-beta剪枝】


排序:

桶排序:O(n)

归并排序:常用于链表排序,O(nlogn)。每次遍历那个节点,交换的时间复杂度O(1),遍历logn次


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

查找

1.二分思想

理解:其主要目的是将整段数丢掉一半来处理。用于加速运算,减少计算量

分类:

a.将二分的思想应用于查找(二分查找)

对于有序数组而言:使用(s+e)/2的方法拿到基准,丢掉大于(或小于)基准的那部分。

例子:

367.https://leetcode.com/problems/valid-perfect-square/

对于无序数组而言:使用partition的方法拿到基准,丢掉大于(或小于)基准的那部分。

b.将二分的思想应用于其他

二分思想应用于其他也是为了将处理的整段数据丢掉一半来处理。想要使用二分的方法减少计算量,这时候分成的两部分数据必须是相同或者至少可以通过部分A的简单运算就可以得到部分B,不然分成两部分计算的方法没有减少计算量的帮助。

例如50.Pow(x, n):http://blog.csdn.net/chinajane163/article/details/53502042,就因为均等划分成n/2和n-n/2后,两部分或相等,或可通过乘x来转化,所以此题才可用二分的方法来提速。

例子:

50.https://leetcode.com/problems/powx-n/

2.两指针

理解:两个指针因同一个条件变化,都能移动的才叫两指针。

for(int i=0;int i<size;++i)
     for(int j...)
这种不叫两指针,指针i,j不是联动的。二分查找某种意义上来说也是两指针。可用于string、array、list等操作

分类:

a.首、尾两指针,两个指针往中间走

从首尾向中间走的一般array,string,list。值都具有一定的顺序性

例子:

15.  https://leetcode.com/problems/3sum/

167.https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/

b.首、首两指针,两个指针往尾走

例子:

3.https://leetcode.com/problems/longest-substring-without-repeating-characters/

3.堆heap

理解:大顶堆,小顶堆常用语输出前k个元素。

阿斯顿


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值