摘要:題目給出一個(gè)整型數(shù)列表和一個(gè)整數(shù),求列表中加起來(lái)等于的兩個(gè)數(shù),并且這一對(duì)是在列表中最先組成對(duì)的。因?yàn)轭}目要求是返回最先組對(duì)成功的兩個(gè)數(shù),所以要找到列表中符合要求的數(shù)對(duì)中,第二個(gè)數(shù)最先出現(xiàn)的數(shù)對(duì)。與擁有類(lèi)似的結(jié)構(gòu)。
題目:給出一個(gè)整型數(shù)列表和一個(gè)整數(shù)sum,求列表中加起來(lái)等于sum的兩個(gè)數(shù),并且這一對(duì)是在列表中最先組成對(duì)的。
這道題并不難,使用兩個(gè)for循環(huán)很容易做出來(lái)。但提交答案時(shí)說(shuō)出了錯(cuò)誤:
Process was terminated. It took longer than 12000ms to complete
我在原來(lái)答案基礎(chǔ)上做了少許更改,可始終達(dá)不到要求,無(wú)奈只好上網(wǎng)找尋答案。總結(jié)后思路如下:
首先出現(xiàn)問(wèn)題的原因是在處理大列表時(shí),雙重for循環(huán)耗費(fèi)太多資源,需要做的是把兩個(gè)for精減為一個(gè)。
因?yàn)轭}目要求是返回最先組對(duì)成功的兩個(gè)數(shù),所以要找到列表中符合要求的數(shù)對(duì)中,第二個(gè)數(shù)最先出現(xiàn)的數(shù)對(duì)。
為了達(dá)到上一步驟的目的,把遍歷過(guò)的數(shù)緩存起來(lái),以后遍歷的數(shù)在緩存好的數(shù)中查找是否有配對(duì)的,有則返回,無(wú)則繼續(xù),直到遍歷完。
def sum_pairs(ints, s): cache = set() for i in ints: other = s - i if other in cache: return [other, i] cache.add(i)
修改后的比我那兩個(gè)for簡(jiǎn)潔很多,看起來(lái)也清楚,時(shí)間更是降了很多,所以算法還是很重要的。
另外,緩存之所以用set,而不用list,是因?yàn)榍罢呤褂胔ash算法,查找速度為O(1),而后者需要通過(guò)下標(biāo)遍歷,查詢(xún)?cè)介L(zhǎng)的列表,需要的時(shí)間越長(zhǎng)。dict與set擁有類(lèi)似的結(jié)構(gòu)。
所以,如果存儲(chǔ)的數(shù)據(jù)會(huì)被反復(fù)查詢(xún),且量大,那么盡量不用list,而是使用dict或set。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/40936.html
摘要:題目鏈接和還有是一類(lèi)題,解法都差不多。可以做,但是這道題如果輸入是有序的,簡(jiǎn)單的會(huì)超時(shí),所以得用來(lái)做。算的方法是比如給的例子,現(xiàn)在分成了左右兩部分,拿兩個(gè)指針和。 493. Reverse Pairs 題目鏈接:https://leetcode.com/problems... 和Count of Smaller Numbers After Self還有count of range su...
摘要:這是我在平時(shí)有時(shí)間的時(shí)候做的一些算法上的題目想看更新請(qǐng)移步這里題目描述解法這個(gè)問(wèn)題當(dāng)時(shí)拿到的時(shí)候是完全沒(méi)有思路的,后面上網(wǎng)查詢(xún)了一下這個(gè)題目,知道了使用斐波那契數(shù)列就能夠解這道題目,,,當(dāng)然百度作業(yè)幫上面也有相應(yīng)的解法,套路就是題目為一 這是我在平時(shí)有時(shí)間的時(shí)候做的一些算法上的題目 想看更新請(qǐng)移步這里 題目: Climbing Stairs 描述 You are climbing a ...
Problem An amicable pair (m,n) consists of two integers m,n for which the sum of proper divisors (the divisors excluding the number itself) of one number equals the other. Given an integer k, find all...
LeetCode version Problem Given a non-empty list of words, return the k most frequent elements. Your answer should be sorted by frequency from highest to lowest. If two words have the same frequency, t...
摘要:前言從開(kāi)始寫(xiě)相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時(shí)也沒(méi)有按順序?qū)懍F(xiàn)在翻起來(lái)覺(jué)得蠻亂的。可能大家看著也非常不方便。所以在這里做個(gè)索引嘻嘻。順序整理更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新 前言 從開(kāi)始寫(xiě)leetcode相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時(shí)也沒(méi)有按順序?qū)憽F(xiàn)在翻起來(lái)覺(jué)得蠻亂的。可能大家看著也非常不方便。所以在這里做個(gè)索引嘻嘻。 順序整理 1~50 1...
閱讀 1571·2021-09-24 10:38
閱讀 1498·2021-09-22 15:15
閱讀 3059·2021-09-09 09:33
閱讀 905·2019-08-30 11:08
閱讀 638·2019-08-30 10:52
閱讀 1253·2019-08-30 10:52
閱讀 2345·2019-08-28 18:01
閱讀 521·2019-08-28 17:55