兩數(shù)之和

給定一個整數(shù)數(shù)組和一個目標值,找出數(shù)組中和為目標值的兩個數(shù)。

你可以假設(shè)每個輸入只對應(yīng)一種答案,且同樣的元素不能被重復(fù)利用。

示例:

給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解答:一遍哈希表

在進行迭代并將元素插入到表中的同時,我們還會回過頭來檢查表中是否已經(jīng)存在當前元素所對應(yīng)的目標元素。如果它存在,那我們已經(jīng)找到了對應(yīng)解,并立即將其返回。

復(fù)雜度分析:

時間復(fù)雜度:O(n), 我們只遍歷了包含有 n 個元素的列表一次。在表中進行的每次查找只花費 O(1) 的時間。

空間復(fù)雜度:O(n), 所需的額外空間取決于哈希表中存儲的元素數(shù)量,該表最多需要存儲 n個元素。

代碼

 public int[] twoSum(int[] nums, int target) {
        int length = nums.length;
        if(length < 1){
            return null;
        }
        Map<Integer, Integer> numMap = new HashMap<>();
        int[] results = new int[2];
    
        for (int i = 0; i < length; i++) {
            int current = nums[i];
            int key = target - current;
            Integer otherIndex = numMap.get(key);
            if (otherIndex != null) {
                results[0] = otherIndex;
                results[1] = i;
                break;
            }
            numMap.put(current, i);
        }
        return results;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.兩數(shù)之和 給定一個整數(shù)數(shù)組和一個目標值,找出數(shù)組中和為目標值的兩個數(shù)。你可以假設(shè)每個輸入只對應(yīng)一種答案,且同樣...
    Gunther17閱讀 1,117評論 2 6
  • 題目描述 給定一個整數(shù)數(shù)組和一個目標值,找出數(shù)組中和為目標值的兩個數(shù)。你可以假設(shè)每個輸入只對應(yīng)一種答案,且同樣的元...
    哦累哇滾筒洗衣機閱讀 205評論 0 0
  • 老付不老,之所以叫老付,是因為從小學起大家都就叫他老付。 小學二年級時有小伙伴在窗外大聲呼喚老付老付,沒等...
    菩提子_8dc6閱讀 564評論 0 0
  • “hope is a powerful thing”
    灼見閱讀 152評論 0 0
  • 5.17道瓊斯與FB走勢 就想每天把道瓊斯的走勢集合一下,昨天在路上,現(xiàn)在仍然飛機晚點中,停很多天了,忘了是多么容...
    與姝會友閱讀 68評論 0 0

友情鏈接更多精彩內(nèi)容