python遇上LeetCode:3sum問題

題目來源

注意點(diǎn):

  1. hash方式的利用
  2. 預(yù)先對(duì)數(shù)組進(jìn)行排序
  3. 如何對(duì)結(jié)果進(jìn)行去重

源碼如下:

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        nums.sort()
        res = []
        rec_set = set()
        for i in range(len(nums)):
            if i > 0 and nums[i] == nums[i-1]: #去重1
                continue
            cur_sum = 0 - nums[i]
            cur_hash = {}
            for j in range(i+1, len(nums)):
                if nums[j] in cur_hash:
                    if len(res)>0 and nums[j] == res[-1][2] and nums[i]==res[-1][0]: #去重2
                        continue
                    res.append([
                        nums[i], 
                        cur_hash[nums[j]],
                        nums[j]   
                    ])
                else:
                    cur_hash[cur_sum - nums[j]] = nums[j]
        return res
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容