首页 > 其他分享 >day25

day25

时间:2023-02-14 00:11:58浏览次数:41  
标签:digits return day25 res int startIndex new

1、leetcode216 组合总和Ⅲ

class Solution {
    List<Integer> path = new LinkedList<Integer>();// 符合条件的结果
    List<List<Integer>> res = new ArrayList<>();// 存放结果集
    int sum;

    public void backTracking(int k, int n, int startIndex) {
        if(path.size() == k) {
            if( sum == n) {
                res.add(new ArrayList<>(path));
            }
            return;// 如果path.size() == k 但sum != targetSum 直接返回
        }

        for(int i=startIndex; i<= 9- (k - path.size()) + 1; i++) {//优化
            sum += i;// 处理
            path.add(i);// 处理
            backTracking(k, n, i+1);// 注意i+1调整startIndex
            sum -= i;// 回溯
            path.remove(path.size()-1);// 回溯
        }

    }

    public List<List<Integer>> combinationSum3(int k, int n) {
        backTracking(k, n, 1);
        return res;
    }
}

2、leetcode17 电话号码的字母组合

class Solution {
    List<String> res = new ArrayList<String>();
    String[] NUMSTRING = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};

    public void backTracking(String digits, StringBuilder sb, int startIndex) {
        if(sb.length() == digits.length()) {
            res.add(sb.toString());
            return;
        }

        for(int i=startIndex; i<digits.length(); i++) {
            int digit = digits.charAt(i) - '0';
            for(char ch : NUMSTRING[digit].toCharArray()) {
                sb.append(ch);
                backTracking(digits, sb, i+1);
                sb.deleteCharAt(sb.length() - 1);
            }
        }
    }

    public List<String> letterCombinations(String digits) {
        if (digits.isEmpty()) {
            return res;
        }

        backTracking(digits, new StringBuilder(), 0);
        return res;
    }
}

标签:digits,return,day25,res,int,startIndex,new
From: https://www.cnblogs.com/hzj-bolg/p/17118361.html

相关文章

  • 剑指offer——Day25 模拟(中等)
    Day252023.2.7模拟(中等)剑指Offer29.顺时针打印矩阵自己实现虽然不知道今天的这个模拟是什么意思,但就先暴力做吧直接暴力遍历但是想了一下,如果是用暴力遍历的话,一......
  • 【算法训练营day25】LeetCode216. 组合总和III LeetCode17. 电话号码的字母组合
    LeetCode216.组合总和III题目链接:216.组合总和III独上高楼,望尽天涯继续复健,一直在犯小的语法错误。慕然回首,灯火阑珊和昨天的题很像,主要区别在于递归返回条件和回溯......
  • day25-类加载器反射
    1.类加载器1.1类加载器【理解】作用负责将.class文件(存储的物理文件)加载在到内存中1.2类加载的过程【理解】类加载时机创建类的实例(对象)调用类的类方法访......
  • 代码随想录算法训练营Day25|216. 组合总和 III、17. 电话号码的字母组合
    代码随想录算法训练营Day25|216.组合总和III、17.电话号码的字母组合216.组合总和III216.组合总和III与「77.组合」类似,但区别在于题干要求的变化:只使用数字1......
  • Day25.2.Arrays类
    Day25.2.Arrays类1.介绍数组工具类java.util.Arrays由于数组对象本身并没有什么方法可以调用,但API中提供了工具类Arrays供使用,从而对数组对象进行一些基本操作具......
  • javascript-代码随想录训练营day25
    216.组合总和Ⅲ题目链接:https://leetcode.cn/problems/combination-sum-iii/题目描述:找出所有相加之和为n的k个数的组合,且满足下列条件:只使用数字1到9每个数字......
  • Day25:接口详解
    接口1.1什么是接口1.2接口的特点接口的关键字是interface接口语句格式:publicinterface接口名{}publicinterfaceJumpping{voidjump();//接口的方法有且一定......
  • day25-Listener监听器
    Listener监听器1.Listener监听器介绍Listener监听器是JavaWeb三大组件之一。JavaWeb三大组件分别是:Servlet程序,Listener监听器,Filter过滤器。Listener是JavaEE的规范,即......
  • day25
    【0347.前K个高频元素】classSolution{public:vector<int>topKFrequent(vector<int>&nums,intk){unordered_map<int,int>map;for(in......
  • 代码随想录Day25
    LeetCode404.左叶子之和计算给定二叉树的所有左叶子之和。   思路:首先由于计算左叶子之和,所以遍历的顺序一定是左在前,选用左右中的后续遍历进行递归比较合适。......