中级农民
- 积分
- 100
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2015-4-20
- 最后登录
- 1970-1-1
|
注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
本帖最后由 yayugk 于 2017-10-31 10:36 编辑
请问下为什么第一个需要deep copy
第二个不需要deep copy呢
谢谢!
![]() - private void helper(ArrayList<Integer> subset,
- int[] nums,
- int startIndex,
- List<List<Integer>> results) {
- // 2. 递归的拆解
- // deep copy
- // results.add(subset);
- results.add(new ArrayList<Integer>(subset))
- for (int i = startIndex; i < nums.length; i++) {
- subset.add(nums[i]);
- helper(subset, nums, i + 1, results);
- subset.remove(subset.size() - 1);
- }
-
- // return;
- }
复制代码- public List<List<Integer>> subsets(int[] nums) {
- List<List<Integer>> result = new ArrayList<List<Integer>>();
- int n = nums.length;
- Arrays.sort(nums);
-
- for (int i = 0; i < (1 << n); i++) {
- List<Integer> subset = new ArrayList<Integer>();
- for (int j = 0; j < n; j++) {
- // check whether the jth digit in i's binary representation is 1
- if ((i & (1 << j)) != 0) {
- subset.add(nums[j]);
- }
- }
- //deep copy
- result.add(subset);
- }
- return result;
- }
复制代码 |
上一篇: 请问有人用python AC leetcode149题么?求答案下一篇: 买卖股票的这几道题很有意思
|