题解 | #集合的所有子集#

集合的所有子集

http://www.nowcoder.com/practice/c333d551eb6243e0b4d92e37a06fbfc9

import java.util.*;

public class Solution {
   // 方法二:通过队列迭代遍历
    public ArrayList<ArrayList<Integer>> subsets(int[] S) {
        
       Arrays.sort(S);
        LinkedList<ArrayList<ArrayList<Integer>>> result = new LinkedList<>();
        ArrayList<ArrayList<Integer>> first = new ArrayList<>();
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(S[0]);
        first.add(arrayList);
        result.add(first);
        for (int i = 1; i < S.length; i++) {
            ArrayList<Integer> f = new ArrayList<>();
            f.add(S[i]);
            ArrayList<ArrayList<Integer>> secend = new ArrayList<>();
            secend.add(f);
            ArrayList<ArrayList<Integer>> t = result.getLast();
            for (ArrayList<Integer> ret : t) {
                ArrayList<Integer> t1 = new ArrayList<>(ret);
                t1.add(S[i]);
                secend.add(t1);
                secend.add(ret);
            }
            result.add(secend);
            result.removeFirst();
        }
        result.getLast().sort(new Comparator<ArrayList<Integer>>() {
            @Override
            public int compare(ArrayList<Integer> o1, ArrayList<Integer> o2) {
                StringBuilder a = new StringBuilder();
                StringBuilder b = new StringBuilder();
                for (Integer value : o1) {
                    a.append(value);
                }
                for (Integer value : o2) {
                    b.append(value);
                }
               return a.toString().compareTo(b.toString());
            }
        });
        result.getLast().add(0, new ArrayList<>());
      
        return result.getLast();
    }
}
全部评论

相关推荐

02-15 22:29
门头沟学院 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务