• LeetCode


    题目:

    Given a collection of integers that might contain duplicates, nums, return all possible subsets.

    Note:

    • Elements in a subset must be in non-descending order.
    • The solution set must not contain duplicate subsets.

    For example,
    If nums = [1,2,2], a solution is:

    [
      [2],
      [1],
      [1,2,2],
      [2,2],
      [1,2],
      []
    ]
    

    思路:

    在subsets的代码上加一句话if (i > start && nums[i] == nums[i - 1]) continue;

    package recursion;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class SubsetsII {
    
        public List<List<Integer>> subsetsWithDup(int[] nums) {
            List<List<Integer>> res = new ArrayList<List<Integer>>();
            List<Integer> record = new ArrayList<Integer>();
            Arrays.sort(nums);
            int n = nums.length;
            for (int k = 0; k <= n; ++k)
                generateRecord(res, record, nums, 0, n - 1, k);
            return res;
        }
        
        private void generateRecord(List<List<Integer>> res, List<Integer> record, int[] nums, int start, int end, int k) {
            if (k == 0) {
                res.add(record);
                return;
            }
            
            for (int i = start; i <= end - k + 1; ++i) { 
                if (i > start && nums[i] == nums[i - 1]) continue;
                List<Integer> newRecord = new ArrayList<Integer>(record);
                newRecord.add(nums[i]);
                generateRecord(res, newRecord, nums, i + 1, end, k - 1);
            }
        }
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            SubsetsII s = new SubsetsII();
            int[] nums = { 1, 2, 2, 3 };
            List<List<Integer>> res = s.subsetsWithDup(nums);
            for (List<Integer> l : res) {
                for (int i : l) 
                    System.out.print(i + "	");
                System.out.println();
            }
        }
    
    }
  • 相关阅读:
    Software Solutions CACHE COHERENCE AND THE MESI PROTOCOL
    CACHE COHERENCE AND THE MESI PROTOCOL
    Multiprocessor Operating System Design Considerations SYMMETRIC MULTIPROCESSORS
    Organization SYMMETRIC MULTIPROCESSORS
    PARALLEL PROCESSING
    1分钟内发送差评邮件
    Secure Digital
    SYMMETRIC MULTIPROCESSORS
    A Taxonomy of Parallel Processor Architectures
    parallelism
  • 原文地址:https://www.cnblogs.com/null00/p/5097795.html
Copyright © 2020-2023  润新知