leetcode刷題——一些演算法技巧總結1.0
阿新 • • 發佈:2018-12-24
運算子優先順序,簡單記就是:! > 算術運算子 > 關係運算符 > && > || > 賦值運算子
把數字取反,可以作為一種標記
python
last = {c: i for i, c in enumerate(S)}標記字串S中每個字母的最後一個位置,存到字典last中十分簡潔的寫法!!!
二分法規則:
如果是這麼寫
while(left <= right) {}
,代表是左閉右閉區間
更新這麼更新{ right = mid -1 left = mid +1 }
如果是這麼寫
while(left < right) {}
更新這麼更新{ right = mid left = mid +1 }
如果是這麼寫
while(left < right-1) {}
,代表是左右雙開區間
更新這麼更新{ right = mid left = mid }
mid = low + (high-low)/2
這樣寫防止溢位 !第167題:
two num
和第560題:Subarray Sum Equals K
有相同的思想:可以使用字典:key: 遍歷list時記錄子list的sum值
value:遍歷list時記錄子list的sum值出現的次數
這樣要找sum為target的次數,就可以找`sum-k`的值出現的次數; 要找sum為target的位置,把此時等於sum的位置返回即可。