這篇文章主要介紹“怎么用LeetCode實(shí)現(xiàn)求兩數(shù)之和”,在日常操作中,相信很多人在怎么用LeetCode實(shí)現(xiàn)求兩數(shù)之和問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么用LeetCode實(shí)現(xiàn)求兩數(shù)之和”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
創(chuàng)新互聯(lián)公司是一家成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),提供網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,建網(wǎng)站,按需求定制網(wǎng)站,網(wǎng)站開發(fā)公司,自2013年創(chuàng)立以來(lái)是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價(jià)值為核心業(yè)務(wù),全程參與項(xiàng)目的網(wǎng)站策劃設(shè)計(jì)制作,前端開發(fā),后臺(tái)程序制作以及后期項(xiàng)目運(yùn)營(yíng)并提出專業(yè)建議和思路。
給定一個(gè)整數(shù)數(shù)組 nums
和一個(gè)整數(shù)目標(biāo)值 target
,請(qǐng)你在該數(shù)組中找出 和為目標(biāo)值的那 兩個(gè)整數(shù),并返回它們的數(shù)組下標(biāo)。
你可以假設(shè)每種輸入只會(huì)對(duì)應(yīng)一個(gè)答案。但是,數(shù)組中同一個(gè)元素在答案里不能重復(fù)出現(xiàn)。
你可以按任意順序返回答案。
示例 1:
輸入:nums = [2,7,11,15], target = 9
輸出:[0,1] 解釋:因?yàn)?nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2:
輸入:nums = [3,2,4], target = 6
輸出:[1,2] 示例 3:
輸入:nums = [3,3], target = 6
輸出:[0,1]
數(shù)組nums中存在兩個(gè)下標(biāo)
的值相加的和等于target
目標(biāo)值,找到這兩個(gè)數(shù)字并返回下標(biāo)
,并且答案中不能出現(xiàn)相同的元素坐標(biāo),即每個(gè)元素下標(biāo)不能重復(fù)
暴力解法
暴力解法,直接雙重for循環(huán),循環(huán)不重復(fù),第一層for循環(huán)從0
到(length-1)
,第二層for循環(huán)從第一層定義的開始+1
到length
,取出第一層循環(huán)的值和第二層循環(huán)的值,相加等于target
則記錄下標(biāo)并返回
class Solution { public int[] twoSum(int[] nums, int target) { int[] ints = new int[2]; int length = nums.length; for(int i = 0 ; i復(fù)雜度
時(shí)間復(fù)雜度:
O(N^2)
,其中N
是數(shù)組中的元素?cái)?shù)量。最壞情況下數(shù)組中任意兩個(gè)數(shù)都要被匹配一次空間復(fù)雜度:O(1)
結(jié)果
執(zhí)行用時(shí):
0
ms, 在所有Java
提交中擊敗了100.00%
的用戶內(nèi)存消耗:
38.7
MB, 在所有Java
提交中擊敗了35.39%
的用戶哈希表
哈希表
思路
暴力解法的弊端在于
x + y == target
的時(shí)間復(fù)雜度過(guò)高,我們需要快速找到x對(duì)應(yīng)的y
(target-x
)是否存在,即快速找到對(duì)應(yīng)的索引,哈希表則是一個(gè)很好的選擇,利用哈希表將當(dāng)前值x
以及對(duì)應(yīng)下標(biāo)i
存儲(chǔ)起來(lái),對(duì)于遍歷的每個(gè)x
,先查詢?cè)诠1碇惺欠裼袑?duì)應(yīng)的y
(target-x
),沒(méi)有則將x
存入到哈希表中,保證x
不會(huì)和自己匹配CODE
class Solution { public int[] twoSum(int[] nums, int target) { Maphashtable = new HashMap (); for (int i = 0; i < nums.length; ++i) { //首先檢查哈希表中是否有對(duì)應(yīng)的y(target-x) if (hashtable.containsKey(target - nums[i])) { return new int[]{hashtable.get(target - nums[i]), i}; } //存儲(chǔ)當(dāng)前值和對(duì)應(yīng)下標(biāo) hashtable.put(nums[i], i); } return new int[0]; } } 復(fù)雜度
時(shí)間復(fù)雜度:
O(N)
,其中N
是數(shù)組中的元素?cái)?shù)量。對(duì)于每一個(gè)元素x
,我們可以O(1)
地尋找target - x
空間復(fù)雜度:
O(N)
,其中N
是數(shù)組中的元素?cái)?shù)量。主要為哈希表的開銷結(jié)果
執(zhí)行用時(shí):
0
ms, 在所有Java
提交中擊敗了100.00%
的用戶內(nèi)存消耗:
38.7
MB, 在所有Java
提交中擊敗了47.28%
的用戶到此,關(guān)于“怎么用LeetCode實(shí)現(xiàn)求兩數(shù)之和”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
當(dāng)前標(biāo)題:怎么用LeetCode實(shí)現(xiàn)求兩數(shù)之和
文章網(wǎng)址:http://weahome.cn/article/jphchg.html