記 被難到的第一個(gè)算法題

今日被問(wèn)到一個(gè)所謂最簡(jiǎn)單的算法題,題目?jī)?nèi)容如下:

一個(gè)列表泣洞,數(shù)字連續(xù),順序無(wú)規(guī)律默色,從中剔除一個(gè)數(shù)球凰,如何快速定位該數(shù)

最開(kāi)始想到的方法是先排序,然后遍歷列表腿宰,依次對(duì)前后元素做差呕诉,不等于1的元素+1,即為剔除的元素吃度,于是具體實(shí)現(xiàn)為:

# method 2
def find_absence_2(lst):
    lst = sorted(lst)
    _len = len(lst) - 1
    for i in range(_len):
        if lst[i + 1] - lst[i] != 1:
            return lst[i] + 1

后來(lái)知道答案后恍然大悟甩挫,才知道原來(lái)如此簡(jiǎn)單,其實(shí)用列表未剔除的和椿每,減去剔除后的和伊者,即得到目標(biāo)值英遭,是不是很簡(jiǎn)單?

# method 1
def find_absence(lst):
    lst = sorted(lst)
    lst_end = lst[-1]
    normal_sum = 0
    for i in range(1, lst_end + 1):
        normal_sum += i
    absence_sum = 0
    for i in lst:
        absence_sum += i
    return normal_sum - absence_sum

但是亦渗,奇怪的是挖诸,從執(zhí)行效率來(lái)看,遍歷列表的方法居然比做差的方法更省時(shí)一點(diǎn)法精,具體如下:

  1. 計(jì)算時(shí)間實(shí)現(xiàn)
......
if __name__ == '__main__':

    upper = 10000000
    target = random.randint(1, upper - 1)
    lst = [n for n in range(1, upper) if n != target]
    start = time.time()
    print(find_absence(lst) == target)
    end = time.time()
    print('run method 1 spend time is ', (end - start))
    start = time.time()
    print(find_absence_2(lst) == target)
    end = time.time()
    print('run method 2 spend time is ', (end - start))
......
  1. 運(yùn)行結(jié)果如下
李迪@freedomLiDi MINGW64 /f/learnPython (master)
$ python find_absence_num.py
True
run method 1 spend time is 1.453
True
run method 2 spend time is 1.391

李迪@freedomLiDi MINGW64 /f/learnPython (master)
$ python find_absence_num.py
True
run method 1 spend time is 1.453
True
run method 2 spend time is 0.953

OK多律!

~
~
~


不積跬步,無(wú)以至千里

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末搂蜓,一起剝皮案震驚了整個(gè)濱河市菱涤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洛勉,老刑警劉巖粘秆,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異收毫,居然都是意外死亡攻走,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)此再,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)昔搂,“玉大人,你說(shuō)我怎么就攤上這事输拇≌” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵策吠,是天一觀的道長(zhǎng)逛裤。 經(jīng)常有香客問(wèn)我,道長(zhǎng)猴抹,這世上最難降的妖魔是什么带族? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮蟀给,結(jié)果婚禮上蝙砌,老公的妹妹穿的比我還像新娘。我一直安慰自己跋理,他們只是感情好择克,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著前普,像睡著了一般肚邢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汁政,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天道偷,我揣著相機(jī)與錄音缀旁,去河邊找鬼。 笑死勺鸦,一個(gè)胖子當(dāng)著我的面吹牛并巍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播换途,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼懊渡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了军拟?” 一聲冷哼從身側(cè)響起剃执,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎懈息,沒(méi)想到半個(gè)月后肾档,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辫继,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年怒见,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姑宽。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡遣耍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出炮车,到底是詐尸還是另有隱情舵变,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布瘦穆,位于F島的核電站纪隙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏难审。R本人自食惡果不足惜瘫拣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望告喊。 院中可真熱鬧,春花似錦派昧、人聲如沸黔姜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)秆吵。三九已至,卻和暖如春五慈,著一層夾襖步出監(jiān)牢的瞬間纳寂,已是汗流浹背主穗。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留毙芜,地道東北人忽媒。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像腋粥,于是被迫代替她去往敵國(guó)和親晦雨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容