当前位置: 首页 > article >正文

代码随想录算法训练营Day19

第77题. 组合

力扣题目链接:. - 力扣(LeetCode)

剪枝操作详解:

k-path.size():还需要的元素个数

n-(k-path.size())+1:能提供所需要元素个数的最大下标

class Solution {
    List<List<Integer>> result=new ArrayList<>();
    List<Integer> path=new ArrayList<>();
    public List<List<Integer>> combine(int n, int k) {
        backtracking(n,k,1);
        return result;
    }
    public void backtracking(int n,int k,int startindex){
        if(path.size()==k){
            result.add(new ArrayList<>(path));
            return;
        }
        for(int i=startindex;i<=n-(k-path.size())+1;i++){
            path.add(i);
            backtracking(n,k,i+1);
            path.removeLast();
        }
    }
}

216.组合总和III

力扣题目链接:. - 力扣(LeetCode)

class Solution {
    List<List<Integer>> result=new ArrayList<>();
    List<Integer> path=new ArrayList<>();
    public List<List<Integer>> combinationSum3(int k, int n) {
            backtracking(k,n,1);
            return result;
    }
    public void backtracking(int k,int n,int startindex){
        if(path.size()==k){
            int sum=0;
            for(int i=0;i<k;i++){
                sum+=path.get(i);
            }
            if(sum==n){
                result.add(new ArrayList<>(path));
            }
            return;
        }
        for(int i=startindex;i<=10-(k-path.size());i++){
            path.add(i);
            backtracking(k,n,i+1);
            path.removeLast();
        }
    }
}

17.电话号码的字母组合

力扣题目链接:. - 力扣(LeetCode)

class Solution {
    List<String> result=new ArrayList<>();
    StringBuilder temp=new StringBuilder();
    public List<String> letterCombinations(String digits) {
        if(digits==null||digits.length()==0){
            return result;
        }
        String[] table={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
        backtracking(digits,table);
        return result;
    }
    public void backtracking(String digits,String[] table){
        if(temp.length()==digits.length()){
            result.add(temp.toString());
            return;
        }
       String str=table[digits.charAt(temp.length())-'0'];
        for(int i=0;i<str.length();i++){
            temp.append(str.charAt(i));
            backtracking(digits,table);
            temp.deleteCharAt(temp.length()-1);
        }
    }
}


http://www.kler.cn/news/341720.html

相关文章:

  • 跨境电商独立站||代码建站和SaaS建站的区别
  • 毕业设计 大数据电影数据分析与可视化系统
  • 前端框架选择指南
  • C语言函数栈帧的创建与销毁(32)
  • vue2中组件注册后,调用时如何命名?组件传参时参数名称如何命名?
  • Redis 排行榜:实现、操作与性能优化
  • 使用 Vue 官方脚手架初始化 Vue3 项目
  • 【MySQL】入门篇—数据库基础:数据库的定义与用途
  • Linux:Linux中目录的遍历和C中目录的遍历
  • 最新版IntelliJ IDEA 2024.2.3 创建SpringBoot项目(包含各种依赖的选择和功能)
  • CDN绕过学习
  • VUE 开发——Vue学习(二)
  • 麦田物语AStar算法(二)--- 测试 + 具体实现
  • 无线费控智能水表:智能生活的守护者
  • 【QT Quick】定时器和线程:定时器Timer
  • 白色简洁大方公司企业网站源码 WordPress主题2款
  • 基于深度学习的3D人体姿态预测
  • 文档大师:打造一站式 Word 报告解决方案
  • 车辆重识别(2021NIPS在图像合成方面,扩散模型打败了gans网络)论文阅读2024/10/01
  • Web开发:总结常见的批处理脚本(.bat)