1. 2數之和
無序陣列,找和為target的2個數字,返回下標。
解法:hash表記錄之前遇到的數字,表中不存在互補的則繼續向後找。
2. 2數之和-有序陣列
有序陣列,找和為target的2個數字。
解法:頭尾雙指標
3. 在bst上的2數之和
資料用bst形式儲存。
解法1:bst中序遍歷輸出為有序陣列,做法轉為2。
解法2:hash表記錄已遍歷內容,做法類似1。
解法3:bst上的遞迴,看作從中間向兩端的雙指標。
4. 2數之和小於target
找出和小於target的2個數中的最大一對。
解法:排序後雙指標
5. 2數之和的資料結構
構造乙個class實現:插入新數字,查詢是否存在和為k的一對數。
解法1:hash表儲存資料,查詢方式類似1。
解法2:維護有序陣列,查詢方式類似2。
6. 3數之和為0
有重複的有序陣列,取3個數之和為0。
解法:固定乙個數,另外2個數用2的雙指標查詢。期間有剪枝的方法。
7. 最接近的3數之和
找出最接近目標值的3數之和。
解法:固定乙個數,另外兩個數雙指標查詢,類似6。
8. 4數之和
找出和為target的4個數組合。
解法:排序,類似3數之和的做法,固定2個數,找2個數。注意處理重複元素。
9. 和為target的子陣列
陣列中找出和為target的子串行數量,陣列亂序,有正負。
解法:字首和,若sum-字首和=target,那麼說明當前位置到字首末尾之間,是所求子陣列。
leetcode鍊錶題目之2 兩數相加
題目描述 思路 對於鍊錶問題,根據以往的經驗一般我們都會新建乙個dummy node,原因是如果在原煉表上進行操作,dummy連上原鍊錶的頭結點,這樣的話就算頭結點變動了,我們可以通過dummy next獲得新鍊錶的頭結點。如果需要返回乙個新鍊錶,根據該啞結點,我們只需在求出新鍊錶的值後逐個新建結點...
leetcode題目 演算法 兩數相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...
leetcode題目 1 兩數之和
題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1...