LintCode 90 [k Sum II]

原題

給定n個(gè)不同的正整數(shù),整數(shù)k(1<= k <= n)以及一個(gè)目標(biāo)數(shù)字?!   ?br> 在這n個(gè)數(shù)里面找出K個(gè)數(shù),使得這K個(gè)數(shù)的和等于目標(biāo)數(shù)字,你需要找出所有滿足要求的方案。

樣例
給出[1,2,3,4],k=2, target=5,返回 [[1,4], [2,3]]

解題思路

  • 由于k Sum是求個(gè)數(shù),所以考慮動(dòng)態(tài)規(guī)劃,直接DFS會(huì)超時(shí)。而k Sum II 是求所有具體的解,所以直接DFS.
  • 思路跟 subsets 類似,可以想象成求一些特殊的subsets,加入result時(shí),要符合subset的和等于target
  • 本題與 Combination Sum II 也非常類似

完整代碼

class Solution:
    """
    @param A: An integer array.
    @param k: A positive integer (k <= length(A))
    @param target: Integer
    @return a list of lists of integer 
    """
    res = []
    def kSumII(self, A, k, target):
        # write your code here
        if A == None:
            return []
        self.dfs(sorted(A), k, 0, [], target)
        return self.res
        
    def dfs(self, nums, k, index, path, target):
        if target == 0 and k == 0:
            self.res.append(path[:])
            return None
        if len(nums) == index or k < 0 or target < 0:
            return None
        for i in range(index, len(nums)):
            self.dfs(nums, k - 1, i+1, path + [nums[i]], target - nums[i])
最后編輯于
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,923評(píng)論 0 33
  • LeetCode 刷題隨手記 - 第一部分 前 256 題(非會(huì)員),僅算法題,的吐槽 https://leetc...
    蕾娜漢默閱讀 18,392評(píng)論 2 36
  • 326. Power of Three Given an integer, write a function to...
    跑者小越閱讀 2,231評(píng)論 0 1
  • 套路很深,就是遍歷全部情況 定義解空間,包含全部解 利用深度優(yōu)先搜索解空間 Trial,減枝。(避免訪問(wèn)不可能產(chǎn)生...
    superlj666閱讀 554評(píng)論 0 0
  • 摘自《提問(wèn)的威力》 當(dāng)我們問(wèn)對(duì)方“為什么”的時(shí)候,容易給人 造成抵觸情緒,因?yàn)檫@會(huì)讓對(duì)方感覺(jué)我們是 在質(zhì)疑他做事的...
    高高_(dá)4dae閱讀 243評(píng)論 0 0

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