Question:
Given a string S, find the length of the longest substring T that contains at most two
distinct characters.
For example,
Given S = “eceba”,
T is "ece" which its length is 3.
代码: 这里
我用的是O(n^3)的方法,不知道怎么更好的剪支,其实在调试的时候发现,一旦发现第二个循环出现了超过2个字符的情况就可以直接调到外层循环了,就是不知道怎么写代码。
另一种方法是,维护一个sliding window保证这个窗口中的字符串最多只有两种,维护start和end的指针,记录每个字符出现的次数,当第三个字符出现时,加入到map中,并且把map中记录的start位置上的字符串删掉,如果start位置上的字符串有多个,就循环将计数器减一,直到为零,然后删除start位置的字符串
代码如下:这里
遥远的彼岸
Tuesday, December 16, 2014
Sunday, December 14, 2014
【leetcode】 mplement strstr()
Implement strstr(). Returns the index of the first occurrence of needle in haystack, or –1
if needle is not part of haystack.
代码: 这里
代码是clean code handbook 里提出的思路,是O(mn)时间复杂度,Leetcode升过一些级,之前这个复杂度是过不了大数据的,但是现在可以过了。
除了KMP 之外是不是还有更高效的方法。
if needle is not part of haystack.
代码: 这里
代码是clean code handbook 里提出的思路,是O(mn)时间复杂度,Leetcode升过一些级,之前这个复杂度是过不了大数据的,但是现在可以过了。
除了KMP 之外是不是还有更高效的方法。
Friday, December 12, 2014
【LeetCode】Maximum Product Subarray
有两个做法一个是暴力双循环
代码:这里
一个是动态规划,维护两个值,一个是的当前最大值,另一个是当前最小值
代码:这里
一个是动态规划,维护两个值,一个是的当前最大值,另一个是当前最小值
similar like Maximum Subarray question
difference is the max value could be get from 3 situations
current maxValue * A[i] if A[i]>0
current minValue * A[i] if A[i]<0
A[i]
We need to record current maxValue, current minValue and update them every time get the new product
代码:这里
【leetcode】 Wildcard Matching 和 Regular Expression Matching
Subscribe to:
Posts (Atom)