[LeetCode]78. Subsets

来源:互联网 发布:数据分析师具备的能力 编辑:程序博客网 时间:2024/05/02 23:10

https://leetcode.com/problems/subsets/

求一个数组不重复的子数组。本题三解。


解法一:递归

public class Solution {    public List<List<Integer>> subsets(int[] nums) {        List<List<Integer>> res = new LinkedList<>();        res.add(new LinkedList<>());        subsets(nums, 0, res, new LinkedList<>());        return res;    }    private void subsets(int[] nums, int pos, List<List<Integer>> res, List<Integer> part) {        for (int i = pos; i < nums.length; i++) {            part.add(nums[i]);            res.add(new LinkedList<>(part));            subsets(nums, i + 1, res, part);            part.remove(part.size() - 1);        }    }}



解法二:非递归

public class Solution {    public List<List<Integer>> subsets(int[] nums) {        List<List<Integer>> res = new LinkedList<>();        res.add(new LinkedList<>());        for (int i = 0; i < nums.length; i++) {            // 要先初始化size,循环过程中size会变            for (int j = 0, size = res.size(); j < size; j++) {                LinkedList temp = new LinkedList<>(res.get(j));                temp.add(nums[i]);                res.add(temp);            }        }        return res;    }}


0 0
原创粉丝点击