之前零零散散的刷过一些题,很容易忘记,准备花一些时间,按照网上大神的思路,认真系统的做一遍,在这里记录一下
滑动窗口问题
3. Longest Substring Without Repeating Characters
遍历字符串,如果字符曾经出现过(用hash表 key:字符,value:字符出现的位置),则移动左指针到字符位置下一个点 和 左指针的较大值位置(这个地方容易错,调试了很多遍才ac)
int lengthOfLongestSubstring(string s) {
int nums[256] = {-1};
for(int i=0;i<256;i++)
nums[i] = -1;
int ans = 0;
for(int i=0,j=0;i<s.length(); i++){
if(nums[s[i]] != -1){
j = max(nums[s[i]] + 1,j);// 这里不是 j = nums[s[i]] + 1;
}
ans = max(i-j+1,ans);
nums[s[i]] = i;
}
return ans;
}
python版
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
occ = {}
ans = 0
left = 0
for i in range(len(s)):
if s[i] in occ:
left = max(left,occ[s[i]]+1)
occ[s[i]] = i
ans = max(i- left + 1,ans)
return ans
排序
148 排序链表
使用并归排序。