• LeetCode OJ


    这道题的做法,一定得掌握啊!!!  elegant & beautiful & concise

    下面是AC代码:

     1  /**
     2       * Given a set of distinct integers, S, return all possible subsets.
     3       * 这道题的做法应该要记住!!!!!
     4       * @param s
     5       * @return
     6       */
     7      public ArrayList<ArrayList<Integer>> subsets(int[] s){
     8          ArrayList<ArrayList<Integer>> r = new  ArrayList<ArrayList<Integer>>();
     9          Arrays.sort(s);
    10          ArrayList<Integer> sub = new ArrayList<Integer>();
    11          r.add(sub);
    12          for(int e : s){
    13              int cur_size = r.size();
    14              for(int j=0;j<cur_size;j++){
    15                  sub = new ArrayList<Integer>();
    16                  sub.addAll(r.get(j));
    17                  sub.add(e);
    18                  r.add(sub);
    19              }
    20          }
    21          return r;
    22      }
    23      /**
    24       * Given a collection of integers that might contain duplicates, S, return all possible subsets.
    25       * @param num
    26       * @return
    27       */
    28      public ArrayList<ArrayList<Integer>> subsetsWithDup(int[] num) {
    29          ArrayList<ArrayList<Integer>> r = new ArrayList<ArrayList<Integer>>();
    30          Arrays.sort(num);
    31          int last = Integer.MAX_VALUE;
    32          int mark = 0;
    33          ArrayList<Integer> sub = new ArrayList<Integer>();
    34          r.add(sub);
    35          for(int e:num){
    36              int cur_size = r.size();
    37              int begin = e==last? mark:0;
    38              for(int i = begin;i<cur_size;i++){
    39                  sub = new ArrayList<Integer>();
    40                  sub.addAll(r.get(i));
    41                  sub.add(e);
    42                  r.add(sub);
    43              }
    44              last = e;
    45              mark = cur_size;
    46          }
    47          return r;
    48      }
    有问题可以和我联系,bettyting2010#163 dot com
  • 相关阅读:
    双端队列
    顺序循环队列
    顺序队列
    Counting Triangles(hd1396)
    蒟蒻之栈模拟递归
    链栈以及顺序栈应用—算数表达式
    栈的简单应用-进制转换
    链栈
    共享栈
    顺序栈
  • 原文地址:https://www.cnblogs.com/echoht/p/3716767.html
Copyright © 2020-2023  润新知