Two Sum,3Sum,3Sum Closest,4Sum

Two Sum

用哈希表,一邊建立一邊搜索,應該是O(n)

python中有內置set類,還有dict類等可以方便使用,注意查看官方文檔


3Sum

首先猜測應該是O(n^2), 那麼就可以用排序O(nlogn),再搜索O(n^2),一個指針p從最前面開始遍歷,對於p的每一個位置,有兩個指針 i,j 在其後,根據和的大小從兩端向中間夾


3Sum Closest

過程與 3Sum 相同,只是記錄的信息不同


4Sum

O(n^3)的方法就不說了,利用空間爲O(n^2)的哈希表可以改進爲時間複雜度爲O(n^2)到O(n^3)之間

首先對所有數排序O(nlogn),建立一個字典dict,記錄兩兩相加的所有和以及得到該和值的兩個數字的位置數對,O(n^2) / O(n^2)

再次 O(n^2) 遍歷,每一次求出兩個數的和,記爲 sum, 再在dict 中查找 target - sum,如果存在,查看存儲的數對是否在求sum所用的數對的後面(保證題目要求abcd

如果在後面,則這四個數字組成一組答案

挑出所有的答案,並去除重複即可(其中去重複的時間複雜度不清楚,總體時間複雜度應該是: O(n^2) 乘 (去重複複雜度))

發佈了68 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章