首页 > 编程语言 >day27 代码随想录算法训练营 40. 组合总和 II

day27 代码随想录算法训练营 40. 组合总和 II

时间:2024-02-01 23:23:54浏览次数:33  
标签:used target day27 随想录 40 candidates result path total

题目:40. 组合总和 II

我的感悟:

  • 只要在路上就不怕走的慢。
  • 卡尔的视频慢慢听 0.75倍听还是可以的。
  • 只要状态好,就可以学。
  • 多学会鼓励

理解难点:

代码难点:

  • ① not used[i-1]等同于used[i-1]==0 
  • 这里用的是True和False,所以用的是not used[i-1]
  • ② i > 0 为了防止i-1越界
  • ③ 剪枝为了每次计算剪枝,防止超时。

整理后我改的代码的示例:

class Solution:


    def backtracking(self, candidates, target, total, startIndex, used, path, result):
        if total == target:
            result.append(path[:])
            return

        for i in range(startIndex, len(candidates)):
            # 对于相同的数字,只选择第一个未被使用的数字,跳过其他相同数字
            if i > 0 and candidates[i] == candidates[i - 1] and not used[i - 1] :    # not used[i-1]等同于used[i-1]==0
                continue           

            total += candidates[i]
            if total > target:  # 剪枝操作
                break
            path.append(candidates[i])
            used[i] = True
            self.backtracking(candidates, target, total, i + 1, used, path, result)
            used[i] = False
            total -= candidates[i]
            path.pop()

    def combinationSum2(self, candidates, target):
        used = [False] * len(candidates)
        result = []
        candidates.sort()
        self.backtracking(candidates, target, 0, 0, used, [], result)
        return result

通过截图:

扩展写法:

资料:

标签:used,target,day27,随想录,40,candidates,result,path,total
From: https://www.cnblogs.com/liqi175/p/18002346

相关文章

  • 深度学习-DNN深度神经网络-反向传播-40
    目录人工神经网络有两个或两个以上隐藏层,称为DNN深度神经网络三种常见的激活函数及其导数--复习前面所学线性回归更新权重逻辑回归多分类......
  • PHPYUN人才招聘系统V7.0_VIP版更新包(20240101)中若干bug的修复解析及上架小程序过程
    没想到这么大的一个php开发者会遇到若干小bug问题,以前正常运行的程序升级到7.0后出现莫名奇妙的问题,比如模板消息不能使用了,完全收不到消息,后来才知道因为改版代码里出现了Bug,在比如网络招聘申请环节没反应,也是bug可能这次更新较大没注意把还好我自己解决了把解决过程分享出来!......
  • 代码随想录算法训练营第九天| 28. 实现 strStr() 459.重复的子字符串 字符串总结 双
     28.实现strStr()给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从0开始)。如果 needle 不是 haystack 的一部分,则返回  -1 。题目链接:28.找出字符串中第一个匹配项的下标-力扣(LeetCode)思路:标......
  • 安装MySQL出现由于找不到vcruntime140_1.dll,无法继续执行代码的提示
    问题描述:在安装MySQL服务的时候,执行安装命令提示如下的错误信息。解决方法:通过分析可以知道,是由于缺少了vcruntime140_1.dll动态链接库文件,这是windows缺少vc_redist.x64.exe程序导致的服务安装错误,与我们要安装的MySQL服务并没有关系。(如果您的安装过VS类型的工具,就不会提示该......
  • 代码随想录 day37 单调递增的数字 监控二叉树
    单调递增的数字只想到暴力解法然后超时这里思路是如果从后往前发现不是递增序列那就把前一位--后一位数字变成9然后维护这个变成9的坐标遍历完后把后面的也全部变成9这个对现在的我来说太难了先贴段代码理解一下吧classSolution{intres=0;publicintminCam......
  • 前端必学-40个精选案例实战-案例5-首页单屏案例实战
    经典背景图文列表案例分析与思路图文背景如何设定<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport......
  • 代码随想录算法训练营第四天 |24. 两两交换链表中的节点 | 19.删除链表的倒数第N个节
    142.环形链表II 已解答中等 相关标签相关企业 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,......
  • 20240130
    Kotlin编程知识总结总结自《Android第一行代码》变量varval可变变量不可变变量自动类型推导:vala=10显式声明类型:vala:Int=10函数关键词funfunmethodName(param1:Int,param2:Int):Int{ return0}语法糖funmethodName(param1:Int,param2:Int):......
  • 代码随想录算法训练营第八天| 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字
    反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。题目链接:344.反转字符串-力扣(LeetCode)关于是否用reverse函数解决问题:如果题目......
  • 20240131
    A.选车站枚举\(x_i<0\)可以\(\mathcal{O}(\sqrt{x_i})\)的计算出最小的\(x_j>0\)使得\(-x_ix_j\)为一个平方数,再枚举倍数即可//Author:xiaruize#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineullunsignedlonglong#defineALL(a......