1. 程式人生 > >leetcode刷題——一些演算法技巧總結1.0

leetcode刷題——一些演算法技巧總結1.0

  1. 運算子優先順序,簡單記就是:! > 算術運算子 > 關係運算符 > && > || > 賦值運算子

  2. 把數字取反,可以作為一種標記

  3. pythonlast = {c: i for i, c in enumerate(S)}標記字串S中每個字母的最後一個位置,存到字典last中

    十分簡潔的寫法!!!

  4. 二分法規則:

    如果是這麼寫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 這樣寫防止溢位 !

  5. 第167題:two num和第560題:Subarray Sum Equals K有相同的思想:

    可以使用字典:key: 遍歷list時記錄子list的sum值

    ​ value:遍歷list時記錄子list的sum值出現的次數

  這樣要找sum為target的次數,就可以找`sum-k`的值出現的次數;

  要找sum為target的位置,把此時等於sum的位置返回即可。