LeetCode兩數之和

2021-10-20 21:37:10 字數 1041 閱讀 2676

題目描述:給定乙個整數陣列 nums 和乙個整數目標值 target,請你在該陣列中找出 和為目標值的那兩個整數,並返回它們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。你可以按任意順序返回答案。

public static int twosum(int nums, int target) }}

int result = ; // 兩個下標放入結果陣列

return result; // 返回結果陣列

}

該題難度描述為簡單,因為非常容易想到使用兩層暴力for迴圈,就能解出來,但這樣時間複雜度就是o(n^2),消耗時長。

想法:既然有元素的比較以及下標的獲取這樣兩者對應關係下的操作,就不難想到雙列組合map,而map集合最經典的應用就是hashmap,且由於需要遍歷元素值,hashmap在理想狀態(無hash衝突)時查詢元素時間複雜度是o(1),明顯可以提高速度。

思路:我們可以建立乙個hashmap用來儲存nums陣列元素值(key)以及對應的下標(value),我們遍歷陣列,做兩個操作,乙個是按格式存入鍵值對,乙個是將target減去正遍歷到的元素值,作為乙個key值查詢map裡是否已經存入該key值,如果有,那麼這個key值對應的value值和正遍歷的值的陣列下標組成的陣列就是我們需要的輸出結果。

注意:因為題目並未限制元素不可以重複,且hashmap如果有重複key值,那麼不會存在兩個key,而是後來的value值替換掉原來的value值,為了保證特殊情況下兩個都取出來或者說被替換前的取出來,我們放入結果陣列裡的後來者應該是陣列元素對應的下標,而不是放進去之後取出來的value。(這樣就在替換前就拿到結果了)

private static int twosum(int nums,int target) ;

}// 把元素值及對應下標存入陣列

map.put(nums[i],i);

}return result;

}

leetcode 兩數之和與兩數之和

題目描述 給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。說明 返回的下標值 index1 和 index2 不是從零開始的。你可以假設每個輸入只對應唯一的答案,而且你不...

LeetCode 兩數之和

基礎不好,筆試 題沒做好,校招沒offer,趕緊來刷題 這裡採用兩種方法來做,比較效能。nums i for i in range 1,100000000 target 3 class solution object deftwosum self,nums,target if len nums 1 ...

兩數之和(LEETCODE)

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 下面是 include stdafx.h includ...