1.Algorithm:https://leetcode-cn.com/problems/combinations/
给定两个整数 n 和 k,返回 1 … n 中所有可能的 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/