首页 > 其他分享 >代码随想录 第25天 | ● 216.组合总和III ● 17.电话号码的字母组合

代码随想录 第25天 | ● 216.组合总和III ● 17.电话号码的字母组合

时间:2024-03-24 14:58:01浏览次数:19  
标签:216 return String int 随想录 字母组合 new numString backtracking

leetcode:216. 组合总和 III - 力扣(LeetCode)

class Solution {
        List<List<Integer>> res = new ArrayList<>();
        LinkedList<Integer> link = new LinkedList<>();

    public List<List<Integer>> combinationSum3(int k, int n) {
        backtracking(k,n,0,1);
        return res;
    }
    public void backtracking(int k , int n , int sum , int strartIndex){
        if( sum > n) return;
        if(link.size() > k) return;
        //和等于目标值,存入二维数组
        if (link.size() == k){
            if(sum == n){
                res.add(new ArrayList<>(link));
                return;
            }

        }
        for(int i = strartIndex;i <= 9; i++){
            link.add(i);
            sum += i;
            backtracking(k,n,sum,i+1);
            sum -= i;
            link.removeLast();
        }

    }
}

 leetcode:17. 电话号码的字母组合 - 力扣(LeetCode)

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

 

标签:216,return,String,int,随想录,字母组合,new,numString,backtracking
From: https://www.cnblogs.com/lengbo/p/18091303

相关文章

  • 代码随想录算法训练营第4天 | 链表 |
    24两两交换列表元素ListNode*swapPairs(ListNode*head){ListNode*shead=newListNode();//初始化shead->next=head;ListNode*cur=shead;ListNode*tmp;//确定先后顺序很重要while(cur->next!=nullptr&&cur->next->next!=nul......
  • 03天【代码随想录算法训练营34期】第二章 链表part01(203.移除链表元素 、707.设计链表
    203.移除链表元素竟然可以做个假head,学到了classListNode(object):def__init__(self,val=0,next=None):self.val=valself.next=nextclassSolution(object):defremoveElements(self,head,val):dummy_head=ListNode(-1)......
  • FIT5216:离散优化问题
    FIT5216:离散优化问题建模课业1:动物捕捉1概述对于这项任务,您的任务是为给定的问题规范编写一个MiniZinc模型。•将您的作品提交到MiniZinc自动评分系统(使用中的提交按钮MiniZincIDE)。您必须在截止日期(2024年3月22日星期五晚上11:55)前提交,使用MiniZinc获得满分。您可以在截止日......
  • 代码随想录算法训练营第五十五天| ● 583. 两个字符串的删除操作 ● 72. 编辑距离
    两个字符串的删除操作 题目链接:583.两个字符串的删除操作-力扣(LeetCode)思路:第一次尝试用画图法,然后肉眼观察dp递归规律……但是dp[i][j]的含义还是参考昨天的思路,表示到此处需要删除多少个字符。classSolution{public:intminDistance(stringword1,stringword2......
  • 代码随想录算法训练营第3天 | 链表 |虚拟头哨兵
    链表理论基础链表节点的定义structListNode{intval;//节点上存储的元素ListNode*next;//指向下一个节点的指针ListNode(intx):val(x),next(NULL){}//节点的构造函数};==如果不自己定义构造函数,就无法通过ListNodep(5);来初始化203删除......
  • 代码随想录算法训练营day31 | leetcode 455. 分发饼干、376. 摆动序列、53. 最大子数
    目录贪心理论基础核心:题目链接:455.分发饼干-简单题目链接:376.摆动序列-中等题目链接:53.最大子数组和-中等贪心理论基础核心:由局部推全局最优题目链接:455.分发饼干-简单题目描述:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每......
  • 代码随想录算法训练营第十八天| 513. 找树左下角的值 112. 路径总和 113. 路径总和
    513.找树左下角的值https://leetcode.cn/problems/find-bottom-left-tree-value/description/publicintfindBottomLeftValue(TreeNoderoot){intval=0;Deque<TreeNode>deque=newArrayDeque<>();deque.offer(root);whi......
  • 【代码随想录】零钱兑换
    题目描述分析这道题分析起来并不难。递推公式也能分析出来,但是我当时写的时候疑惑的一个问题就是:如何判断硬币组合的总额刚好等于需要的金额,因为这里的dp数组很明显是组成总金额所需的最少硬币个数。我试着加了一个数组存储当前情况下的金额。但是想一下就知道这样太笨了。实......
  • 代码随想录算法训练营第day54|392.判断子序列 、 115.不同的子序列
    目录392.判断子序列115.不同的子序列392.判断子序列力扣题目链接(opensnewwindow)给定字符串s和t,判断s是否为t的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而......
  • 【代码随想录】零钱兑换II(关于组合与排列的区别)
    题目描述分析按动态规划的分析步骤分析的话,代码是不难写出来的,但是写出来后你就会发现,结果不对,多出了很多组合:解决方法:什么都不用改,直接把两个循环调换即可。。代码如下:#include<bits/stdc++.h>usingnamespacestd;intchange(intamount,vector<int>&coins){ i......