zoukankan      html  css  js  c++  java
  • 9.4---集合子集(CC150)

    这题非常复杂。牛客网上对应的题目对结果要求比较苛刻,所以要调整。

    整体思路是:先放进去一个,然后第二个来的时候插入到已有的,并且把自己也放进去。

    public static  ArrayList<ArrayList<Integer>> getSubsets(int[] a, int n){
            ArrayList<ArrayList<Integer>> res = new ArrayList();
            if(n <= 0) return res;
    
            ArrayList<Integer> tmp = new ArrayList();
            tmp.add(a[n-1]);
            res.add(tmp);
            for(int i = n-2; i >=0; i--){
                ArrayList<ArrayList<Integer>> res2 = new ArrayList(res);
                for(ArrayList<Integer> list : res){
                    ArrayList<Integer> list2 = new ArrayList(list);
                    list2.add(a[i]);
                    res2.add(list2);
                }
                ArrayList<Integer> list3 = new ArrayList();
                list3.add(a[i]);
                res2.add(list3);
                res = new ArrayList(res2);    
            }
    
            ArrayList<ArrayList<Integer>> res3 = new ArrayList();
            ArrayList<Integer> max = new ArrayList();
        
            int flag = 0;
            int h = res.size();
            while(res3.size() != h){
                max = res.get(0);
                for(int i = 1; i < res.size(); i++){
                    if(big(res.get(i),res.get(flag))){
                        max = res.get(i);
                        flag = i;
                    }
                
                }
                ArrayList<Integer> list4 = new ArrayList(max);
                res3.add(list4);
                
                res.remove(flag);
                flag = 0;
    
            }
    
            return res3;
        }
    
    
        public static boolean big(ArrayList<Integer> list1, ArrayList<Integer> list2){
            for(int i = 0; i < list1.size() && i<list2.size(); i++){
                if(list1.get(i) > list2.get(i)){
                    return true;
                }
                else if(list1.get(i) < list2.get(i)){
                    return false;
                }
                else{
    
                }
            }
            if(list1.size() > list2.size())
                return true;
            else{
                return false;
            }
        }
  • 相关阅读:
    mysql 时间函数
    Excel名称管理
    Unicode中文和特殊字符的编码范围
    带有历史数据置顶的id列表查询
    汉字表示范围
    ASP.NET模拟http进行GET/POST请求
    ASP.NET AES-128-CBC加密解密(与php通讯)
    dapper.net 获取分页存储过程返回的多结果集
    微信网页版抓包登录
    js添加/移除/阻止事件
  • 原文地址:https://www.cnblogs.com/yueyebigdata/p/5086740.html
Copyright © 2011-2022 走看看