题解 | #集合的所有子集(一),垃圾解法,能过就行#

集合的所有子集(一)

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

import java.util.*;

public class Solution {
    public ArrayList<ArrayList<Integer>> subsets(int[] S) {
        if(S == null || S.length == 0) return new ArrayList<>() ;
        ArrayList<ArrayList<Integer>> res = new ArrayList<>() ;
        //dp[i]表示以 S[i-1]结尾的所有的 子集合
        ArrayList<ArrayList<Integer>>[] dp = new ArrayList[S.length+1];
        ArrayList<ArrayList<Integer>> aa0 = new ArrayList<>() ;
        ArrayList<Integer> a0 = new ArrayList<>() ;
        aa0.add(a0) ;
        dp[0] = aa0 ;
        res.addAll(dp[0]) ;
        for(int i = 1 ; i < dp.length ; i ++) {
            ArrayList<ArrayList<Integer>> cur = new ArrayList<>() ;
            for(int j = 0 ; j < i ; j ++) {
               ArrayList<ArrayList<Integer>> curj = dp[j] ;
               for(ArrayList<Integer> l : curj) {
                   ArrayList<Integer> ll = new ArrayList(l) ;
                   ll.add(S[i-1]) ;
                   cur.add(ll) ;
               }
            }
            dp[i] = cur ;
            res.addAll(dp[i]) ;
        }
        Collections.sort(res , (l1 , l2)->{
            if(l1.size() == l2.size()) {
                for(int i = 0 ; i < l1.size() ; i ++) {
                    if(l1.get(i) != l2.get(i)) {
                        return l1.get(i) - l2.get(i) ;
                    }
                }
                return 0 ;
            } else {
                return l1.size() - l2.size() ;
            }
        }) ;
        return res ;
    }   
}


一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论

相关推荐

06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务