我的编程空间,编程开发者的网络收藏夹
学习永远不晚

[leetcode]39. Combin

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

[leetcode]39. Combin

题目:

Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.

The same repeated number may be chosen from C unlimited number of times.

Note:
All numbers (including target) will be positive integers.
The solution set must not contain duplicate combinations.
For example, given candidate set [2, 3, 6, 7] and target 7,
A solution set is:
[
[7],
[2, 2, 3]
]

意思说 给你一组正数C,然后 给你一个目标数T, 让你从那组C中找到加在一起等于T的那些组合。
比如 给你7 然后 从[2,3,6,7]中可以找到[2,2,3]和[7]两组组合。
想了一下还是用DFS:

就以这个例子举,比如让我找组成7的数
首先那个7肯定是。
然后再看,6,如果6在我们结果里,那还得有能组成7-6=1的数,对吧,然而并没有1,放弃6
再看3,如果要有3,那后面要有能组成7-3=4的数,
发现了什么没有。。
只是从需要组成7的变换成需要组成4的,那写一个函数就可以了。

这个函数的主题逻辑是:
Target =T,然后从数组中找一个数n,然后在 剩下的部分target 变成了 T-n,以此类推。

函数到哪返回呢,如果目标数T=0,则找的成功,返回,如果目标数T小于C中最小的数,言外之意就是我们找到不这样的组合了,寻找失败,返回。
需要注意的是,答案要求没有重复的,如果只是这么写会变成[2,3,2],[2,2,3],[3,2,2],因此要记下 上一个数,我是从小往大找的,也就是说,

如果我已经找完n=2的情况,再去找n=3的时候,3就不应该往回再选n=2了,只能往后走,不然就会重复。

代码如下:



class Solution(object):
    def combinationSum(self, candidates, target):
        """
        :type candidates: List[int]
        :type target: int
        :rtype: List[List[int]]
        """
        self.resList = []
        candidates = sorted(candidates)
        self.dfs(candidates,[],target,0)
        return self.resList
    def dfs(self, candidates, sublist, target, last):
        if target == 0:
            self.resList.append(sublist[:])
        if target< candidates[0]:
            return 
        for n in candidates:
            if n > target:
                return
            if n < last:
                continue
            sublist.append(n)
            self.dfs(candidates,sublist,target - n, n)
            sublist.pop()

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

[leetcode]39. Combin

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

[leetcode]39. Combin

题目:Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate n
2023-01-31

Navicat 1142 SELECT command denied to user 'sx'@'xxx' for table 'user' - G

Navicat 1142 SELECT command denied to user "sx"@"xxx" for table "user" 使用Navicat使用sx用户连接数据库时或者连接为用户sx开放的数据库travel_agency时,Navicat窗
Navicat 1142 SELECT command denied to user 'sx'@'xxx' for table 'user' - G
2019-12-02

1146 - Table 'performance_schema.session_variables' doesn't exist

1146 - Table "performance_schema.session_variables" doesn"t exist一 问题出现场景1 在Flask使用SQLAlchemy操作mysql的时候会出现2 使用Navicat连接数据库会出现附:连接N
1146 - Table 'performance_schema.session_variables' doesn't exist
2017-09-12

mysql登录错误:'Access denied for user 'root'@'localhost'

首先是不知道怎么忽然mysql用命令行,workbench都登录不了,都提示"Access denied for user "root"@"localhost"。数据库卸载重装了几次都不行。好像感觉数据清理不干净。解决的过程遇到的坑,这里记录分享下。有效的操作
2021-12-03

Failed to run 'create login' or 'sp_addsrvrolemeber' in sql Linux using windows auth

Error 15404 ‘Could not obtain information about Windows NT group/user ‘%ls’, error code 0x80090304′
2019-08-05

ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'

ERROR 1396 (HY000): Operation ALTER USER failed for "root"@"localhost"在网上找了很多帖子都是互相抄的,关键是执行后不解决问题,这里分享下我的解法。 问题就是 Navicat连接时报错然后再服
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'
2017-04-02

Mac下Mysql遇到ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using pass

注意环境变量的设置:打开终端,输入: open -e .bash_profile  #打开环境变量设置文件在文件中输入: export PATH=${PATH}:/usr/local/mysql/bin  保存文件并退出。安装完成后,启动进入的时候会出现这个错
Mac下Mysql遇到ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using pass
2019-08-06

mysql密码错误-ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passw

一般这个错误是由密码错误引起,解决的办法自然就是重置密码。假设我们使用的是root账户。1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下:root 00:22:26~$ vim /etc/my.cnf (注:windows下修改的是my.ini)
mysql密码错误-ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passw
2019-12-07

Access denied for user '-Mike'@'localhost' (using password: YES)问题解决方案

今天使用新创建的用户登录mysql时被提示 Access denied for user "-Mike"@"localhost" (using password: YES)操作步骤:      成功!!!(虽然不知道为啥)有无野生大佬给解答一下
Access denied for user '-Mike'@'localhost' (using password: YES)问题解决方案
2021-08-30

mysql密码错误-ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passw

一般这个错误是由密码错误引起,解决的办法自然就是重置密码。假设我们使用的是root账户。1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下:root 00:22:26~$ vim /etc/my.cnf (注:windows下修改的是my.ini)
mysql密码错误-ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passw
2022-04-22

解决Mysql报Invalid default value for ''operate_time''错误的问题

在数据库中执行建表语句CREATE TABLE `sys_acl` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '权限id',`code` varchar(20) NOT NULL DEFAU
2022-05-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录