Leetcode General

C++

Posted by PZ on March 4, 2020

不要在一行写判断函数 如下面:会出错!!!!

if(needle[k] != haystack[j-nSize+1+k]) allSame = false; break;

Sort 通常能做到 NlogN 如果time exceed,可以尝试先sort,再做处理

超时的时候都想着把重要步骤时间复杂度降低 比如改用Map Find 而不是 Vector Count

• 通常提到O(1) find 第一想到的是Map
• 提到 O(1) 修改某个元素的位置,那就是Linked List 
§ 经典例题:LRU cache = Double Linked List + HashMap

记录的数都很有意义,length等等尤其在array里面

a + 0ll + b// 防止溢出
二分法
通常 while (x < y)  x = y 那个时候的值。 
可以用来求upper bound 或者 Lower bound --> 
LeetCode 278. First Bad Version
typedef pair<int,char> pi;
需要最大最小值

当需要找到最小值或者最大值的时候,就不需要一个一个遍历了,用红黑树去实现 (multiset, multimap) 等等。

C++ map 自动生成,比如 char, int 自动为 0 的value,可以直接 count[t[i]]++
unordered_map<char, int> counts;
for (int i = 0; i < n; i++) {
	counts[s[i]]++;
	counts[t[i]]--;
}