給定一個整數數組?nums
?和一個整數目標值?target
,請你在該數組中找出?和為目標值?target
? 的那?兩個?整數,并返回它們的數組下標。
你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素在答案里不能重復出現。
你可以按任意順序返回答案。
利用哈希表查找效率完成優化
思路:在進行迭代并將元素插入到表中的同時,我們還會回過頭來檢查表中是否已經存在當前元素所對應的目標元素。如果它存在,那我們已經找到了對應解,并立即將其返回。
時間復雜度: O(n)
空間復雜度: O(n)
public class Solution {public int[] TwoSum(int[] nums, int target) {Dictionary<int,int> dic = new Dictionary<int,int>();for(int i = 0; i < nums.Length; i++){int ans = target - nums[i];if(dic.ContainsKey(ans) && dic[ans] != i){return new int[] { i, dic[ans] };}if( !dic.ContainsKey(nums[i]) )dic.Add(nums[i],i);}return new int[] { 0, 0 };}
}