最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用python實(shí)現(xiàn)兩數(shù)之和的畫(huà)解算法

 更新時(shí)間:2021年08月31日 12:39:37   作者:不吃西紅柿丶  
這篇文章主要介紹了使用python實(shí)現(xiàn)兩數(shù)之和的畫(huà)解算法,采用實(shí)例問(wèn)題的描述來(lái)進(jìn)行問(wèn)題分析,并給出用暴力求解和哈希表兩種方法解決方案,有需要的朋友可以參考下

題目描述

給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)整數(shù)目標(biāo)值 target,請(qǐng)你在該數(shù)組中找出 和為目標(biāo)值 target 的那 兩個(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]

問(wèn)題分析

1.暴力求解

兩層循環(huán),外層循環(huán)枚舉(或稱作選中一個(gè)標(biāo)桿),內(nèi)層循環(huán)從枚舉值之后開(kāi)始遍歷,計(jì)算兩數(shù)的和是否等于target。

如果找到了兩個(gè)數(shù),那么返回這兩個(gè)數(shù)的下標(biāo)。

for(int i = 0; i < n - 1; ++i) {
    for(int j = i + 1; j < n; ++j ) {
        if nums[i] + nums[j] == target
        ...
    }
}

暴力求解的算法時(shí)間復(fù)雜度為指數(shù)級(jí),也就是O(n^2)

分析暴力求解,我們發(fā)現(xiàn)存在重復(fù)搜索的情況,也就是對(duì)數(shù)組中的部分?jǐn)?shù)據(jù)搜索了多次。

那如何只對(duì)數(shù)組中的數(shù)據(jù)搜索1次(或常數(shù)級(jí)),然后求解呢?

我們知道,尋找一個(gè)數(shù)是否存在,最快的方法是通過(guò)hash表,在O(1)的時(shí)間復(fù)雜度之內(nèi)就可以判斷是否存在某個(gè)數(shù)。

2.哈希表求解

可對(duì)數(shù)組遍歷一次,然后將數(shù)據(jù)存入hash表,然后再遍歷一次數(shù)組

查找 target - currentdata 是否存在hash表中,如果存在,那么我們就尋找到了兩個(gè)數(shù)。

題目要求我們返回?cái)?shù)組的下標(biāo),那么我們的hash表的key是數(shù)組元素的值,value是下標(biāo)。

  • 這種方法在最壞的情況下,對(duì)數(shù)組遍歷了2次,也就是算法的時(shí)間復(fù)雜度是O(2n),去掉前導(dǎo)系數(shù)是O(n),雖然是相比暴力求解,算法的時(shí)間復(fù)雜度降低了,但是還有優(yōu)化的空間。
  • 在遍歷數(shù)組并將數(shù)據(jù)放入hash表的同時(shí),我們也可以find(target - currentdata)是否存在,如果存在那么就找到了滿足條件的兩個(gè)數(shù)。

find(9-4), 存在那返回這兩個(gè)數(shù)的下標(biāo),如果不存在,那么將 4 放入hash表。

image.png


find(9-6), 存在那返回這兩個(gè)數(shù)的下標(biāo),如果不存在,那么將 6 放入hash表。

image.png

在遍歷到元素5的時(shí)候,我們find(9-5),找到了這兩個(gè)數(shù)。

image.png

動(dòng)畫(huà)演示下這個(gè)過(guò)程

2021-06-06 222452.gif

代碼實(shí)現(xiàn)

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        hashtable = dict()
        for i, num in enumerate(nums):
            # ② map中查找是否有 target - curvalue的數(shù)據(jù)
            if target - num in hashtable:
                return [hashtable[target - num], i]
            # ① 數(shù)組中的每個(gè)數(shù)放入map中
            hashtable[nums[i]] = i
        return []

以上就是使用python實(shí)現(xiàn)兩數(shù)之和的畫(huà)解算法的詳細(xì)內(nèi)容,更多關(guān)于python實(shí)現(xiàn)兩數(shù)之和的畫(huà)解算法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python中常見(jiàn)的KeyError報(bào)錯(cuò)分析

    Python中常見(jiàn)的KeyError報(bào)錯(cuò)分析

    在Python編程中,KeyError是一種非常常見(jiàn)的異常,它通常發(fā)生在嘗試訪問(wèn)字典中不存在的鍵時(shí),本文將深入探討KeyError的報(bào)錯(cuò)原因、解決辦法,并通過(guò)代碼示例來(lái)演示如何避免這一錯(cuò)誤,需要的朋友可以參考下
    2024-07-07
  • python多線程如何獲取有序結(jié)果

    python多線程如何獲取有序結(jié)果

    在Python中,多線程編程是一個(gè)常見(jiàn)需求,尤其是在處理I/O密集型任務(wù)時(shí),然而,多線程環(huán)境下保持任務(wù)執(zhí)行結(jié)果的順序通常較為復(fù)雜,為了解決這一問(wèn)題,可以通過(guò)封裝一個(gè)功能來(lái)確保即使在多線程環(huán)境下,任務(wù)的執(zhí)行結(jié)果也能按照一定的順序進(jìn)行收集和處理
    2024-09-09
  • 關(guān)于Python 解決Python3.9 pandas.read_excel(‘xxx.xlsx‘)報(bào)錯(cuò)的問(wèn)題

    關(guān)于Python 解決Python3.9 pandas.read_excel(‘xxx.xlsx‘)報(bào)錯(cuò)的問(wèn)題

    這篇文章主要介紹了關(guān)于Python 解決Python3.9 pandas.read_excel(‘xxx.xlsx‘)報(bào)錯(cuò)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python如何實(shí)現(xiàn)機(jī)器人聊天

    Python如何實(shí)現(xiàn)機(jī)器人聊天

    這篇文章主要介紹了Python如何實(shí)現(xiàn)機(jī)器人聊天,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-09-09
  • pandas中DataFrame的merge操作的實(shí)現(xiàn)

    pandas中DataFrame的merge操作的實(shí)現(xiàn)

    本文主要介紹了pandas中DataFrame的merge操作的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Tensorflow 合并通道及加載子模型的方法

    Tensorflow 合并通道及加載子模型的方法

    今天小編就為大家分享一篇Tensorflow 合并通道及加載子模型的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Anaconda第三方庫(kù)下載慢的解決方法

    Anaconda第三方庫(kù)下載慢的解決方法

    本文主要介紹了Anaconda第三方庫(kù)下載慢的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • python 實(shí)現(xiàn)socket服務(wù)端并發(fā)的四種方式

    python 實(shí)現(xiàn)socket服務(wù)端并發(fā)的四種方式

    這篇文章主要介紹了python 實(shí)現(xiàn)socket服務(wù)端并發(fā)的四種方式,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • python爬蟲(chóng)項(xiàng)目設(shè)置一個(gè)中斷重連的程序的實(shí)現(xiàn)

    python爬蟲(chóng)項(xiàng)目設(shè)置一個(gè)中斷重連的程序的實(shí)現(xiàn)

    這篇文章主要介紹了python爬蟲(chóng)項(xiàng)目設(shè)置一個(gè)中斷重連的程序的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 一文搞懂Python中pandas透視表pivot_table功能

    一文搞懂Python中pandas透視表pivot_table功能

    透視表是一種可以對(duì)數(shù)據(jù)動(dòng)態(tài)排布并且分類匯總的表格格式?;蛟S大多數(shù)人都在Excel使用過(guò)數(shù)據(jù)透視表,也體會(huì)到它的強(qiáng)大功能,而在pandas中它被稱作pivot_table,今天通過(guò)本文給大家介紹Python中pandas透視表pivot_table功能,感興趣的朋友一起看看吧
    2021-11-11

最新評(píng)論

黄龙县| 安宁市| 扎兰屯市| 西和县| 汪清县| 青铜峡市| 海丰县| 托里县| 深州市| 兴隆县| 阳新县| 雷波县| 乐都县| 花莲市| 阿城市| 商洛市| 永胜县| 连州市| 扶沟县| 建昌县| 旅游| 和田市| 东安县| 洪江市| 鲜城| 宜昌市| 台北市| 社旗县| 呼伦贝尔市| 商丘市| 定边县| 屏南县| 卓尼县| 双鸭山市| 乌恰县| 聊城市| 新和县| 藁城市| 阿拉善左旗| 馆陶县| 临海市|