216. 组合总和 III

文章目录


216. 组合总和 III

思路:

定义一个 combinationSum3 方法,接受两个参数:k 表示组合中的数字个数,n 表示目标和。

在 combinationSum3 方法中,初始化一个空列表 ans 用于存储结果,以及一个空列表 path 用于暂时存储当前的组合。

调用深度优先搜索(DFS)算法 dfs,从数字 1 开始搜索可能的组合。

在 dfs 方法中,首先检查当前和 s 是否为 0,如果是则说明找到了一个符合条件的组合,判断当前组合中数字个数是否等于 k,如果是则将其添加到结果列表中。

然后进行递归搜索,遍历从 i+1 到 9 的所有可能数字,并更新当前和和组合路径。

递归结束后,需要将路径中最后一个数字移除,回溯到上一个状态,继续搜索其他可能的组合。

最后返回结果列表 ans。


java 复制代码
class Solution {
    public List<List<Integer>> combinationSum3(int k, int n) {

        List<List<Integer>> ans = new ArrayList<>();
        List<Integer> path = new ArrayList<>();

        dfs(1,n,ans,path,k);
        return ans;
    }

    public void dfs(int i, int s, List<List<Integer>> ans, List<Integer> path, int k) {
        if (s == 0) {
            if (path.size() == k) {
                ans.add(new ArrayList<>(path));
            }
            return;
        }
        if (i > 9 || i > s || path.size() >= k) {
            return;
        }
        path.add(i);
        dfs(i+1,s-i,ans,path,k);
        path.remove(path.size()-1);
        dfs(i+1,s,ans,path,k);
    }

}

点击移步博客主页,欢迎光临~

相关推荐
大明者省9 小时前
WSL2 Ubuntu22.04 GPU训练环境配置指南
人工智能·算法·计算机视觉
白狐_79810 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander25811 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
Shell运维手记11 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
杨航 AI11 小时前
O(n log n):线性对数原理拆解 这个是排序算法的黄金复杂度之一。
算法·排序算法
船厂电气自动化ai大模型12 小时前
AI大模型与数学 第32课 函数凹凸性与二阶导数:拐点求解、凹凸区间计算(10道二阶导数计算题)
数据结构·人工智能·python·深度学习·算法
旖旎夜光12 小时前
LeetCode 3:无重复字符的最长子串(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
叠层归一研究院13 小时前
AGI 系统(十一):二阶网络 — 二阶递归 × 多主体 (元符号网络)
开发语言·人工智能·算法·php·agi
zlinear数据采集卡14 小时前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构
杨石兴14 小时前
31、玩具MoM:用2x2矩阵串起全套流程
人工智能·算法·矩阵·电磁学