day77(2.5)——leetcode面试经典150

77. 组合

77. 组合

java和c++果然还是不太一样,这个对象是同一个地址一定要注意

题目:

题解:

java 复制代码
class Solution {
    boolean[] flag;
    List<List<Integer>> list;

    void dfs(int x, int start, int n, int k, List<Integer> l) {
        if(x==k) {
            //这里的l是一个对象,同一个地址,最后l变成什么,每一次添加进去的l都会变成最后结果结果,所以这里要new一个副本
            list.add(new ArrayList<>(l));
            return ;
        }
        for(int i=start;i<=n;i++) {
            if(flag[i-1]==false) {
                l.add(i);
                flag[i-1]=true;
                dfs(x+1, i+1, n, k, l);
                flag[i-1]=false;
                l.remove(l.size()-1);
            }
        }
    }

    public List<List<Integer>> combine(int n, int k) {
        flag = new boolean[n];
        list = new ArrayList<>();
        dfs(0, 1, n, k, new ArrayList<Integer>());
        return list;
    }
}
相关推荐
凌波粒4 小时前
LeetCode--404.左叶子之和(二叉树)
算法·leetcode·职场和发展
青山师4 小时前
二叉树与BST深度解析:遍历算法与平衡策略
数据结构·算法·面试·二叉树·算法与数据结构·java面试·数据结构与算法分析
绝知此事4 小时前
【算法突围 03】核心算法思想:分治/递归/动态规划与 LeetCode 高频真题解析
算法·leetcode·面试·动态规划
Wanderer X4 小时前
【面试】HR
面试
jiayong235 小时前
前端面试题库 - ES6+新特性篇
前端·面试·es6
我爱cope6 小时前
【力扣hot100:76. 最小覆盖子串】
算法·leetcode·职场和发展
jiayong236 小时前
前端面试题库 - JavaScript核心基础篇
前端·javascript·面试
JAVA面经实录9176 小时前
Java多线程并发高频面试100题(完整版·含答案·背诵版)
java·开发语言·面试
吃着火锅x唱着歌7 小时前
LeetCode 962.最大宽度坡
算法·leetcode·职场和发展
凌波粒7 小时前
LeetCode--257. 二叉树的所有路径(二叉树)
算法·leetcode·职场和发展