Leetcode解題技巧總結

遞歸的出口和和參數不滿足條件

  1. 參數不滿函數處理的條件,直接返回錯誤代碼
  2. 判斷出口條件

優先級隊列

//使用PriorityQueue實現大頂堆

//PriorityQueue默認是一個小頂堆,然而可以通過傳入自定義的Comparator函數來實現大頂堆。如下代碼:
private static final int DEFAULT_INITIAL_CAPACITY = 11;
PriorityQueue<Integer> maxHeap=new PriorityQueue<Integer>(DEFAULT_INITIAL_CAPACITY, new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {                
            return o2-o1;
        }
    });

優先級隊列參考鏈接
參看資料

快速排序算法中思想應用

quickselect
leetcode:215. Kth Largest Element in an Array

DFS和回溯

首先如何考慮往下走,深度下去, 然後回溯回來
代碼結構體

  1. 函數體(要處理的結果集nums,函數處理的進口0,path, result)
  2. Dfs(最後結果result,中間結果path,處理的結點開始位置, 剪枝開始條件)
    • 剪枝條件
    • 循環, 處理爲i
      • 去重
      • Path添加處理的元素 path.add(i)
      • 深度下去,考慮下一步 (是i還是i+1)
      • 回退代碼體 path.remove(i)
        中間結果是怎樣處理的

hashmap 進行統計計數的情況

取出一個判斷一次即可

程序運行過程中

要學會沒執行完一個過程就要判斷是否滿足了條件

雙指針

採用雙指針逼近最大值的情況,類似於選擇排序算法

寫代碼的習慣

先判斷條件然後在決定是否做,將判斷放在前面,如果滿足或者不滿足都立刻返回,這樣可以直接得到結果好很多情況
比如 55. Jump Game

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章