LeetCode刷題 兩數之和 持續更新

2021-10-03 15:53:00 字數 1482 閱讀 2956

前言:最近業餘時間,一直在看leetcode上面的題,上面有許多好的解題思路可以借鑑到我們真正的專案中。總之,要靜下心來認真研究,對我們無論是目前做的專案還是以後出去面試,都會有很大的幫助。

題目描述

給定乙個整型陣列,要求返回兩個數的下標,使得兩數之和等於給定的目標值,要求同乙個下標不能使用兩次。

資料保證有且僅有一組解。

樣例給定陣列 nums = [2, 7, 11, 15],以及目標值 target = 9,

由於 nums[0] + nums[1] = 2 + 7 = 9,

所以 return [0, 1].

解題思路一(暴力法)

這個我們大家只要寫過一兩年**都會想到,就是兩遍for迴圈就可以搞定。

核心**如下

//暴力方法

public

static

int[

]twosum

(int

nums,

int target);}

}}throw

newillegalargumentexception

("no two sum solution");

}

結果分析

暴力列舉方法很簡單:兩重迴圈列舉下標 i,j,然後判斷nums[i]+nums[j]nums[i]+nums[j] 是否等於 targettarget。時間複雜度:由於有兩重迴圈,所以複雜度是 o(n2)。

解題思路二(使用map)

核心**如下

//雜湊表

public

static

int[

]twosummap

(int

nums,

int target);}

map.

put(nums[i]

,i);

}throw

newillegalargumentexception

("no two sum solution");

}

使用map時候可能大家會有疑問,如果遇到這樣資料會出現問題,這一點我們做個小實驗就可以看出是否有問題。

public

static

void

main

(string[

] args)

;int

twosum =

twosummap

(nums,4)

; system.out.

println

(arrays.

tostring

(twosum));

}

結果為:[1, 4]

通過以上結果看出,如果出現重複的資料不會出現問題。

leetCode刷題 兩數之和

兩數之和 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums...

leetCode刷題 兩數之和

兩數之和 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums...

LeetCode刷題 兩數之和

給定乙個整數陣列nums和乙個整數目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回它們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。你可以按任意順序返回答案。示例 1 輸入 nums 2,7,11,15 target 9 輸出 0,1 解釋...