第三天 4 Sum

哈哈,繼續(xù)在前兩天的基礎之上,4 Sum問題

https://leetcode-cn.com/problems/4sum/description/

對于這種列表的題目,繼續(xù)要排個序,開始想過類似分治的方法,但好像路走不通,那么本著解決問題的思路,就先繼續(xù)“退化”的路,這里就是通過循環(huán),把4Sum變成了3Sum,然后再變成2Sum,基于排序,那么就可以用雙指針法。

原本寫出來之后,以為會超時,但沒想到竟然低分飄過了。

現(xiàn)在回過來看,應該還是有不少可以優(yōu)化的地方,這個計劃就留到周末去吧,平時工作日就先爭取刷一道題,就理解一種思路,順便繼續(xù)熟悉了Python的代碼range的用法,對于一個寫慣了Java的人來說,這種基于range的循環(huán)還是需要適應下。

盡管貢獻了一個效率比較低的代碼,但實際就可讀性和理解方面還是比較清晰的【好吧,其實就是算法比較挫啦】

class Solution:
    def fourSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[List[int]]
        """
        nums.sort()
        ret = set()
        for i in range(len(nums)-3):
            for j in range(i+1,len(nums)-2):
                t = -(nums[i] + nums[j])+target
                l = j+1
                r = len(nums)-1
                while l<r:
                    two_sum = nums[l] + nums[r]
                    if two_sum == t:
                        ret.add((nums[i],nums[j],nums[l],nums[r]))
                        l+=1
                        r-=1
                    elif two_sum < t:
                        l+=1
                    elif two_sum > t:
                        r-=1
        return list(ret)
                    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

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