zoukankan      html  css  js  c++  java
  • [LeetCode]题解(python):040-Combination Sum II

    题目来源:

      https://leetcode.com/problems/combination-sum-ii/


    题意分析:

      给定一个数组序列和一个target。给出数组里面可以相加等于target的所有组合,数组里面的数每个最多出现一次。1.题目中所有的数都是正数,2.组合的答案必须按字典序排序,3.每个组合只出现一次。


    题目思路:

      这题和上一题类似,首先将数组排序,如果组合不包括第一个数,那么,直接跳到和第一个数不等的数,如果包括,那么数组跳到下一个数,target 减去第一个数。


    代码(python):

      

     1 class Solution(object):
     2     def boolcombinationSum(self, candidates, target,j):
     3         ans = [];size = len(candidates)
     4         if target == 0:
     5             return []
     6         if size < j + 1 or target < 0:
     7             return [[-1]]
     8         n = 1
     9         while j + n < size:
    10             if candidates[j + n] != candidates[j]:
    11                 break
    12             n += 1
    13         tmp1 = self.boolcombinationSum(candidates,target,j + n)
    14         tmp2 = self.boolcombinationSum(candidates,target - candidates[j],j + 1)
    15         if len(tmp2) == 0:
    16             ans.append([candidates[j]])
    17         elif tmp2 != [[-1]]:
    18             for i in range(len(tmp2)):
    19                 ans.append([candidates[j]] + tmp2[i])
    20         if len(tmp1) != 0 and tmp1 != [[-1]]:
    21             for i in range(len(tmp1)):
    22                 ans.append(tmp1[i])
    23         if len(tmp2) != 0 and tmp1 == [[-1]] and tmp2 == [[-1]]:
    24             return [[-1]]
    25         return ans
    26     def combinationSum2(self, candidates, target):
    27         """
    28         :type candidates: List[int]
    29         :type target: int
    30         :rtype: List[List[int]]
    31         """
    32         candidates.sort()
    33         ans = self.boolcombinationSum(candidates,target,0)
    34         if ans == [[-1]]:
    35             return []
    36         return ans
    View Code

    转载请注明出处:http://www.cnblogs.com/chruny/p/4934155.html

  • 相关阅读:
    前端Javascript
    第十一周双闭环控制
    补第九周手绘图
    第十一周仿真作业
    第九周PLECS仿真
    第五六周读书笔记
    PLECS模拟与设计结构-4
    机电传动控制读书笔记-3
    PLECS仿真报告2
    PLECS仿真报告
  • 原文地址:https://www.cnblogs.com/chruny/p/4934155.html
Copyright © 2011-2022 走看看