1.Algorithm:https://leetcode-cn.com/problems/combinations/

给定两个整数 n 和 k,返回 1 … 中所有可能的 k 个数的组合。

比较典型的做法是用回溯。从1开始,记录每个数字开头的k个数的组合,一直到计算出所有可能的组合。

参考代码如下:

public class Combinations {
    List<List<Integer>> res = new LinkedList();
    int n;
    int k;

    public List<List<Integer>> combine(int n, int k) {
        this.n = n;
        this.k = k;
        backtrack(1, new LinkedList<Integer>());
        return res;
    }


    public void backtrack(int first, LinkedList<Integer> curr) {
        if (curr.size() == k) {
            res.add(new LinkedList(curr));
        }

        for (int i = first; i < n + 1; ++i) {
            curr.add(i);
            backtrack(i + 1, curr);
            curr.removeLast();
        }
    }
}

2.Review:https://shipilev.net/jvm/anatomy-quarks/7-initialization-costs/

java对象初始化都消耗在什么地方了

在作者的实验中可以看出,如果对象和数组比较大,那对象和数组的初始化是性能表现的主要因素。反之,如果对象和数组比较小,元数据的写入就是主要因素。

3.Tip:跟着网络编程实战专栏,继续学习相关linux编程的知识。

4.share: https://thurstonzk2008.com/2019/10/29/%e7%bc%93%e5%ad%98%e8%af%bb%e5%86%99%e7%ad%96%e7%95%a5/