LeetCode216组合总和3

题目描述

  找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:只使用数字1到9。每个数字 最多使用一次。返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。

解析

  递归加剪枝,搜索长度达到k就可以返回,另外当选择的数之和比n还大的时候就可以不用再搜索了。

public List<List<Integer>> combinationSum3(int k, int n) {
        List<List<Integer>> res = new ArrayList<>();
        boolean[] isChosen = new boolean[10];
        List<Integer> current = new ArrayList<>();
        DFS(res, current, isChosen, 0, k, n, 1);
        return res;
    }

    private void DFS(List<List<Integer>> res,
                            List<Integer> current,
                            boolean[] isChosen,
                            int curSum,
                            int k,
                            int n,
                            int start) {

        if(current.size() == k) {
            if(curSum == n) {
                res.add(new ArrayList<>(current));
            }
            return;
        }

        for(int i = start; i <= 9 ; i++) {
            if(!isChosen[i]) {
                current.add(i);
                curSum += i;
                if(curSum <= n) {
                    isChosen[i] = true;
                    DFS(res, current, isChosen, curSum, k, n, i + 1);
                }
                current.remove(current.size() - 1);
                curSum -= i;
                isChosen[i] = false; // 回溯
            }
        }
    }

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/675611.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于 Amazon EC2 快速部署 Stable Diffusion WebUI + chilloutmax 模型

自2023年以来&#xff0c;AI绘图已经从兴趣娱乐逐渐步入实际应用&#xff0c;在众多的模型中&#xff0c;作为闪耀的一颗明星&#xff0c;Stable diffusion已经成为当前最多人使用且效果最好的开源AI绘图软件之一。Stable Diffusion Web UI 是由AUTOMATIC1111 开发的基于 Stabl…

【数字孪生平台】光幻示例解析

本文在线示例查看。更多精彩内容尽在数字孪生平台,关注公众号:sky的数孪技术,技术交流、源码下载请添加VX:digital_twin123 地形构建 我们目的要搭建一个中间平坦、两侧有凹凸山脉效果并且能够一直绵延不断的地形,接下来我们通过三个问题来进行分析。 采用什么样的几何图…

Vue——模板引用(不建议使用,了解)

文章目录 前言测试案例 前言 模板引用&#xff0c;在官方文档中也有很详细的描述。 虽然 Vue 的声明性渲染模型为你抽象了大部分对 DOM 的直接操作&#xff0c;但在某些情况下&#xff0c;我们仍然需要直接访问底层 DOM 元素。 个人理解为&#xff1a; 在vue中&#xff0c;依据…

Scrum团队在迭代中如何处理计划外的工作

认为 Scrum 团队不做计划其实是一个误区&#xff0c;实际上很多 Scrum 团队在冲刺计划会议以及在细化工作项时均会进行详细规划。此外&#xff0c;他们还会创建一个路线图&#xff0c;以便显示他们在多个冲刺中的计划。 Scrum 团队需要经常进行计划&#xff0c;以便在不断变化…

本地 Java API 访问云上 HDFS 集群的问题与解决

前言 这篇文章默认是已经在云上配置好了 Haoop 集群&#xff0c;因此本文主要是记录一些可能会出现错误的地方。 如果还不会配置 Hadoop 集群&#xff0c;那么可以参考本专栏的另一篇文章&#xff1a;云上配置 Hadoop 集群详解 另外在进行本文的学习之前也建议先看看该文章&…

创意设计新伙伴:StartAI PSAI插件,让设计工作更轻松!

在设计的世界里&#xff0c;灵感与效率是设计师的双翼。但有时候&#xff0c;面对复杂的设计任务和紧迫的截止日期&#xff0c;即使是最富有经验的设计师也会感到力不从心。StartAI&#xff0c;一款革命性的PS AI设计插件。 StartAI&#xff1a;设计工作的加速器 StartAI是一款…

超分辨重建——SRGAN网络训练自己数据集与推理测试(详细图文教程)

&#x1f4aa; 专业从事且热爱图像处理&#xff0c;图像处理专栏更新如下&#x1f447;&#xff1a; &#x1f4dd;《图像去噪》 &#x1f4dd;《超分辨率重建》 &#x1f4dd;《语义分割》 &#x1f4dd;《风格迁移》 &#x1f4dd;《目标检测》 &#x1f4dd;《暗光增强》 &a…

Linux——简单指令汇总

Linux&#xff0c;一般指GNU/Linux&#xff0c;是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦兹&#xff08;Linus Benedict Torvalds&#xff09;于1991年10月5日首次发布&#xff0c;它主要受到Minix和Unix思想的启发&#xff0c;是一个…

笔记-python操作kafka实践

1、先看最简单的场景&#xff0c;生产者生产消息&#xff0c;消费者接收消息&#xff0c;下面是生产者的简单代码。 #!/usr/bin/env python # -*- coding: utf-8 -*- import json from kafka import KafkaProducerproducer KafkaProducer(bootstrap_serversxxxx:x)msg_dict …

浅测 长亭雷池 WAF “动态防护”

本文首发于 Anyeの小站 前言 雷池 WAF 社区版的更新速度是真快啊&#xff0c;几乎一周一个小版本&#xff0c;俩月一个大版本&#xff0c;攻城狮们真的狠啊&#xff0c;没法测了。 废话不多说&#xff0c;前两天看到了 这篇文章&#xff0c;对雷池的“动态防护”功能挺感兴趣…

二人订单共享模式:新零售电商盈利新秘诀

电商江湖日新月异&#xff0c;竞争如火如荼&#xff0c;如何脱颖而出&#xff0c;赢得消费者&#xff1f;二人订单共享模式&#xff0c;这是一种全新的商业模式&#xff0c;旨在打造爆款产品&#xff0c;迅速吸引大量客源&#xff0c;并激发消费者重复购买欲望。 首先&#xf…

期权懂带你懂50etf认沽期权和认购期权有什么区别?

今天带你了解期权懂带你懂50etf认沽期权和认购期权有什么区别&#xff1f;在金融市场中&#xff0c;期权是一种允许持有者在未来某个时间以特定价格买入或卖出基础资产的金融衍生品。 50etf认沽期权和认购期权有什么区别&#xff1f; 50ETF认沽期权和认购期权的主要区别在于它…

从报名到领证:软考高级【网络规划设计师】报名考试全攻略

本文共计10551字&#xff0c;预计阅读35分钟。包括七个篇章&#xff1a;报名、准考证打印、备考、考试、成绩查询、证书领取及常见问题。 不想看全文的可以点击目录&#xff0c;找到自己想看的篇章进行阅读。 一、报名篇 报名条件要求&#xff1a; 1.凡遵守中华人民共和国宪…

淘宝电商接口获取商品数据,该怎么获取?

淘宝电商接口&#xff08;也称为淘宝开放平台API&#xff09;允许开发者通过编程方式获取淘宝平台上的商品数据、订单数据等。然而&#xff0c;直接获取淘宝的商品数据并不是一件简单的事情&#xff0c;因为淘宝对API的使用有一定的限制和要求&#xff0c;包括权限申请、接口调…

项目-双人五子棋对战: websocket的讲解与使用 (1)

项目介绍 接下来, 我们将制作一个关于双人五子棋的项目, 话不多说先来理清一下需求. 1.用户模块 用户的注册和登录 管理用户的天梯分数, 比赛场数, 获胜场数等信息. 2.匹配模块 依据用户的天梯积分, 实现匹配机制. 3.对战模块 把两个匹配到的玩家放到同一个游戏房间中, 双方通…

线程进阶-2 ThreadLocal

一.简单说一下ThreadLocal 1.ThreadLocal是一个线程变量&#xff0c;用于在并发条件下&#xff0c;为不同线程提供相互隔离的变量存储空间。在多线程并发的场景下&#xff0c;每个线程往ThreadLocal中存的变量都是相互独立的。 2.基本方法 &#xff08;1&#xff09;set(Obj…

wms中对屏幕进行修改wm size设置屏幕宽高原理剖析

背景&#xff1a; 上面是正常屏幕1440x2960的屏幕大小&#xff0c;如果对display进行相关的修改&#xff0c;可以使用如下命令&#xff1a; adb shell wm size 1080x1920 得出如下的画面 明显看到差异就是屏幕上下有黑边了&#xff0c;那么下面就来调研这个wm size是怎么做的…

软件系统测试的定义和测试内容介绍

一、什么是软件系统测试? 软件系统测试是指对软件系统的功能、性能、可靠性、稳定性等方面进行全面检查和验证的过程。其目的是发现潜在的问题、缺陷和风险&#xff0c;并确保软件系统的质量和稳定性。 软件系统测试可以分为多个阶段&#xff0c;包括单元测试、集成测试、系…

《深入浅出C语言:从基础到指针的全面指南》

1. 简介 C语言是一种通用的编程语言&#xff0c;广泛应用于系统编程、嵌入式系统和高性能应用程序。它由Dennis Ritchie在1972年开发&#xff0c;并且至今仍然非常流行。C语言以其高效、灵活和强大的功能著称&#xff0c;是许多现代编程语言的基础。 2. 基本语法 2.1 Hello, …

44-4 waf绕过 - CDN简介

一、CDN简介 CDN,即内容分发网络(Content Delivery Network),是建立在现有网络基础之上的智能虚拟网络。它依靠部署在各地的边缘服务器,并通过中心平台的负载均衡、内容分发和调度等功能模块,使用户可以就近获取所需内容,从而降低网络拥塞,提高用户访问响应速度和命中率…