之前已经刷过剑指offer和newcoder上的leetcode140题。如果感兴趣可以去看看那些文章。这篇博客主要是为了记录自己刷leetcode的过程,希望可以刷到300题左右(ps:我自己也不知道什么时候会太监)
话不多说,开始。
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
这一题其实蛮有趣的,可以和maxhistogram混合着看。这个要比柱状图简单。但是感觉柱状图更具有逻辑性。
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | /** |
1 | class Solution { |
1 | /** |
1 | class Solution { |
1 | /** |
1 | /** |
1 | class Solution { |
1 | class Solution { |
重新总结一下KMP算法。KMP是为了匹配字段而产生的O(n+m)的一种算法。
首先,要计算移动table(DICT)。DICT表示对于pattern每一位和str不匹配时需要到达的ptr。用通俗的话来讲,把pattern写成如下形式,
pattern[prestr, …, poststr, …],prestr和poststr相同,每一位表示自己之前可以写成prestr…poststr的形式,而dict每一位表示prestr的长度。
如AAAABAA,DICT=[0, 1, 2, 3, 0, 0, 1]。以最后一位A来讲,前面是AAAABAA,prestr=AA,poststr=AA。所以最后一位应当指向第二个A。
生成DICT可以用如下算法:
case1, dict[i]=dict[len]
case2, dict[i]!=dict[len] && len != 0
case3, dict[i]!=dict[len] && len == 0
其中,len是指前后缀的长度。
具体匹配时,用如下算法:
case1,str[i]=pattern[ptr] -> i++, ptr++
case2, str[i]!=pattern[ptr] && dict[i] != 0 -> ptr = dict[i-1]
case3, str[i]!=pattern[ptr] && dict[i] == 0 -> i++
生成DICT需要m到2m的比较(最坏情况aaaaaaab)
匹配需要n到2n的比较(最坏情况以m为周期循环,即aaabaaabaaab,aaaa,比较次数为n/m*m+n=2n)
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
这题还是挺有趣的,如果要找到第一个未出现的正整数,可以使用类似于bucket sort的思想。
原理:要找到第一个未出现的正整数,则只需要保留最大size个数,其他都是没有用的。那么,将数字放在他的位置,然后再次线性扫描即可。
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | /** |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | /** |
1 | /** |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | /** |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | /** |
1 | class Solution { |
1 | /** |
1 | /** |
1 | class Solution { |
1 | /** |
1 | /** |
1 | /** |
1 | /** |
1 | /** |
1 | /** |
1 | /** |
1 | /** |
1 | /** |
1 | /** |
1 | /** |
1 | /** |
1 | class Solution { |
1 | /** |
1 | /** |
1 | /** |
1 | /** |
1 | /** |
1 | /* |
1 | /* |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | /** |
1 | class Solution { |
1 | class Solution { |
1 | /** |
1 | class Solution { |
1 | class Solution { |
1 | /* |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | /* |
1 | class Solution { |
1 | class Solution { |
1 | /** |
1 | /** |
1 | /** |
1 | /** |
1 | /** |
1 | /* |
1 | /** |
1 | /** |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class MinStack { |
1 | /** |
1 | class Solution { |
1 | struct Bucket { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | /** |
1 |
|
1 | # Write your MySQL query statement below |
1 | # 177. Nth Highest Salary |
1 | class Solution { |
1 | # Write your MySQL query statement below |
1 | class Solution { |
1 | # Write your MySQL query statement below |
1 | # Write your MySQL query statement below |
1 | # Write your MySQL query statement below |
1 | # Write your MySQL query statement below |
1 | # Write your MySQL query statement below |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | /** |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | /** |
1 | class Solution { |
1 | class Solution { |
1 | /** |
1 | class Solution { |
1 | /* |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | /* |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |