Sliding Window
-
不同字元
- 加長window(右邊指標+1)
- 紀錄目前字串長度
-
相同字元
- 刪除左邊指標的字元,直到左右邊字元相同
基本做法
- 利用dictionary儲存目前字串
- 如果char已經出現過,和之前的字串長度做比較,儲存最大值
- 索引起始點定位成這次char的位置,下次迴圈將char的下一個位置開始執行
- 避免字串完全沒重複,回傳答案之前再比一次
- 因為每一次遇到重複char,就要以那個char為起點重跑一次迴圈,所以效率低
- 遇到左括號就push
- 遇到又括號就 TryPop
- 如果左右括號都match的話,stack應該為空
思路
- 要注意的就是list1跟list2長度可能不一樣
- 相加後可能比9還大,需要考慮進位的情況
解題方法
- 迴圈
- 要運用傳址呼叫的技巧,一開始讓point只給要回傳的結果,之後把下一個節點只給point,讓point前進 。
- 遞迴
- 停止條件 l1 l2為空,而且沒有進位。
- l1和l2相加後,將兩列node和進位結果傳入遞迴呼叫。
思路
- 陣列無限大,回傳第一個組合即可
- 製作索引的同時也要比較是否有符合條件的配對
解題方法
- 雙重迴圈
- 時間複雜度O(n^n)
- 單迴圈
- 用target減去陣列數字選出對應的候選數字
- 當候選數字出現時,回傳候選數字位址和當下數字位址
- 記錄陣列每個數字的值和位址