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;
    }
}
相关推荐
用户852495071848 小时前
解密 JavaScript 中的 this:谁才是真正的调用者?
javascript·面试
Heo8 小时前
Vite进阶用法详解
前端·javascript·面试
洛卡卡了8 小时前
Claude Code rules 要怎么用,团队协作时如何统一代码规范呢?
面试·agent·claude
不好听61312 小时前
JavaScript 的 this 到底指向谁?
javascript·面试
烬羽12 小时前
面试官:聊聊 LocalStorage 和 this 指向?看这篇就够了
面试·程序员
weedsfly12 小时前
JS垃圾回收:从原理到项目实战,彻底根治内存泄漏
前端·javascript·面试
HjhIron1 天前
面试常客:字符串算法从入门到进阶
算法·面试
大志说编程1 天前
Agent面试真题06: 十分钟带你快速掌握Agent记忆管理高频面试题(附详细答案)
后端·面试·ai编程