• Leetcode题库——40.组合总和II



    @author: ZZQ
    @software: PyCharm
    @file: combinationSum2.py
    @time: 2018/11/15 18:38
    要求:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
    candidates 中的每个数字在每个组合中只能使用一次。
    说明:
    所有数字(包括目标数)都是正整数。
    解集不能包含重复的组合。
    示例 1:
    输入: candidates = [10,1,2,7,6,1,5], target = 8,
    所求解集为:
    [
    [1, 7],
    [1, 2, 5],
    [2, 6],
    [1, 1, 6]
    ]
    示例 2:
    输入: candidates = [2,5,2,1,2], target = 5,
    所求解集为:
    [
    [1,2,2],
    [5]
    ]
    思路; 深搜+ 减枝
    注意停止: 如果当前temp_ans > target, 则停止, return
    注意每个元素只能使用一次, 先对数组进行排序,然后每次深搜都从下一个元素开始。
    注意拷贝temp_ans到新的数组中,再存入ans中。

    import copy
    class Solution():
        def __init__(self):
            pass
    
        def combinationSum2(self, candidates, target):
            """
            :type candidates: List[int]
            :type target: int
            :rtype: List[List[int]]
            """
            candidates.sort()
            can_len = len(candidates)
            if can_len == 0:
                return []
            ans = []
            temp_ans = []
            temp_sum = 0
            start_index = -1
            self.dfs(temp_ans, temp_sum, start_index, target, candidates, ans)
            return ans
    
        def dfs(self, temp_ans, temp_sum, start_index, target, candidates, ans):
            if temp_sum == target:
                tt_ans = copy.deepcopy(temp_ans)
                ans.append(tt_ans)
                return
            if temp_sum > target:
                return
            for i in range(start_index+1, len(candidates)):
                if i > start_index+1 and candidates[i] == candidates[i-1]:
                    continue
                temp_ans.append(candidates[i])
                self.dfs(temp_ans, temp_sum + candidates[i], i, target, candidates, ans)
                temp_ans.pop()
    
  • 相关阅读:
    Linux任务前后台的切换
    如何给html元素的onclick事件传递参数即如何获取html标签的data
    关键词多空格处理
    tp3常量
    php 正则判断是否是手机号码
    thinkphp 初始化
    删除图标
    time() 在thinkphp 3.2.3 模板格式化输出
    iOS工程如何支持64-bit
    调试instruments
  • 原文地址:https://www.cnblogs.com/zzq-123456/p/9965659.html
Copyright © 2020-2023  润新知