這篇文章給大家分享的是有關(guān)LeetCode怎么實(shí)現(xiàn)兩數(shù)之和的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)花垣免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
1
題目描述
給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)目標(biāo)值 target,在該數(shù)組中找出和為目標(biāo)值的那兩個(gè)整數(shù)的數(shù)組下標(biāo)。如nums = [2, 7, 11, 15], target = 9時(shí),返回[0,1](因?yàn)?+7=9)。
2
解題
通過(guò)兩層for循環(huán)對(duì)所有可能逐一進(jìn)行驗(yàn)證,找到正確結(jié)果。此方法python程序在LeetCode中顯示時(shí)間超出限制,不推薦。
思路二:哈希表
通過(guò)一層for循環(huán)結(jié)合enumerate()找到每個(gè)數(shù)字值與位置的關(guān)系,存儲(chǔ)在哈希表中。因?yàn)橐覂蓴?shù)之和,所以每次循環(huán)時(shí),首先判斷target-item是否在已經(jīng)建立的哈希表中,如果在則返回兩個(gè)值的位置,如果不在把本次得到的值與位置關(guān)系新添在哈希表中。
class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: h_map = {} # 或 h_map = dict() for i,item in enumerate(nums): if target-item in h_map : # 或 if h_map.get(target-item) is not None: , # 但速度略慢一些 return [h_map[target-item],i] h_map[item]=i 需要注意的是,類似nums=[2,2],target=4的輸入,生成哈希表時(shí)第二個(gè)2的位置會(huì)覆蓋第一個(gè)2的位置,導(dǎo)致無(wú)法得到[0,1]的結(jié)果,因此要在循環(huán)最后將本次的值與位置關(guān)系加入哈希表中,而不是在兩層for后首先將對(duì)應(yīng)關(guān)系加入哈希表。并且本方法,判斷target-item是否在列表中時(shí),是在item之前的值中查找符合條件的值,而不是針對(duì)列表中全部元素進(jìn)行判斷,使得效率進(jìn)一步提升(不用擔(dān)心這樣會(huì)錯(cuò)過(guò)正確答案,因?yàn)楫?dāng)兩個(gè)元素都循環(huán)到時(shí),結(jié)果依舊可以識(shí)別出來(lái))。
感謝各位的閱讀!關(guān)于“LeetCode怎么實(shí)現(xiàn)兩數(shù)之和”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
網(wǎng)頁(yè)名稱:LeetCode怎么實(shí)現(xiàn)兩數(shù)之和
鏈接URL:http://chinadenli.net/article14/gosgge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、服務(wù)器托管、網(wǎng)站營(yíng)銷、網(wǎng)站內(nèi)鏈、標(biāo)簽優(yōu)化、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)