• LeetCode Subsets


    Given a set of distinct integers, S, 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 S = [1,2,3], a solution is:

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

    思路是,每次添加一个元素,就是在上一次的基础上,对每个列表加入元素,再与上一次的合并。

     1 public class Solution {
     2     public List<List<Integer>> subsets(int[] S) {
     3             List<List<Integer>> lastList=new ArrayList<>();
     4             List<Integer> nonSet= new ArrayList<>();
     5             lastList.add(nonSet);
     6             if (S==null || S.length==0) {
     7             return lastList;
     8             }
     9             Arrays.sort(S);
    10             
    11             for (int i = 0; i < S.length; i++) {
    12                 List<List<Integer>> tempList=new ArrayList<>();         
    13             for (List<Integer> list : lastList) {
    14                     List<Integer> currlist=new ArrayList<>();
    15                     currlist.addAll(list);
    16                     currlist.add(S[i]);
    17                     tempList.add(currlist);
    18             }
    19             lastList.addAll(tempList);
    20             }
    21             return lastList;
    22     }
    23 }
  • 相关阅读:
    CCF NOI1079 合法C标识符
    CCF NOI1080 统计字符
    CCF NOI1076 进制转换
    CCF NOI1065 最小公倍数
    CCF NOI1139 高精度减法
    CCF NOI1138 高精度加法
    CCF NOI1115 找数
    CCF NOI1097 数列
    CCF NOI1089 高精度运算
    NUC1931 Problem D 区间素数【素数筛选】
  • 原文地址:https://www.cnblogs.com/birdhack/p/4055511.html
Copyright © 2020-2023  润新知