力扣(leetcode)
已認證的官方帳號
關注他
15 人贊同了該文章
給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。
你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。
示例:
給定 nums = [2, 7, 11, 15], target = 9兩數之和 - leetcode (中國)leetcode-cn.com因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
暴力法很簡單,遍歷每個元素
public int twosum(int nums, int target) ;}}
} throw new illegalargumentexception("no two sum solution");
}
複雜度分析:為了對執行時間複雜度進行優化,我們需要一種更有效的方法來檢查陣列中是否存在目標元素。如果存在,我們需要找出它的索引。保持陣列中的每個元素與其索引相互對應的最好方法是什麼?雜湊表。
通過以空間換取速度的方式,我們可以將查詢時間從
乙個簡單的實現使用了兩次迭代。在第一次迭代中,我們將每個元素的值和它的索引新增到表中。然後,在第二次迭代中,我們將檢查每個元素所對應的目標元素
public int twosum(int nums, int target)
for (int i = 0; i < nums.length; i++) ;}}
throw new illegalargumentexception("no two sum solution");
}
複雜度分析:事實證明,我們可以一次完成。在進行迭代並將元素插入到表中的同時,我們還會回過頭來檢查表中是否已經存在當前元素所對應的目標元素。如果它存在,那我們已經找到了對應解,並立即將其返回。
public int twosum(int nums, int target) ;
}map.put(nums[i], i);
} throw new illegalargumentexception("no two sum solution");
}
複雜度分析:編輯於 2018-11-28 leetcode題解 1 兩數之和
兩數之和 link 1.題目分析1.為了以o n 的時間複雜度完成尋找,那麼只能是遍歷一遍或者多遍,而且在每個位置操作的時間複雜度是常數時間。2.逆向思維,把找兩個數轉換成 longrightarrow 檢視每個數是否有與其相加之和滿足條件的數 3.為了在常數時間內完成匹配查詢,可以先遍歷一遍預處理...
LeetCode1 兩數之和題解
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。舉個例子 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9...
題解 LeetCode 1 兩數之和
原題傳送 leetcode 1.兩數之和 給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那 兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。給定 nums 2,7,11,15 target 9 因為 nums ...