最近在忙秋招,投了各种公司,参加了各种线上笔试,在线上笔试的过程中,经常遇到一些题目,想要求得最终结果的话需要获取某一数组的所有子集(暴力破解)。
import java.util.ArrayList;
import java.util.List;
/**
* Created by byuwa on 2017/9/15.
*/
public class SubArrays {
public static void main(String[] args) {
int[] nums = {1,2,3};
List<ArrayList<Integer>> arrays = getSubArrays(nums);
for(int i=0;i<arrays.size();i++){
ArrayList<Integer> sub = arrays.get(i);
for(int j=0;j<sub.size();j++){
System.out.print(sub.get(j)+" ");
}
System.out.println();
}
}
public static List getSubArrays(int[] nums){
int count = (int)Math.pow(2,nums.length);
List<ArrayList<Integer>> arrays = new ArrayList<ArrayList<Integer>>();
for(int i=1;i<count;i++){
List<Integer> subarray = new ArrayList<Integer>();
int temp = i;
int index = 0;
while (temp!=0){
if((temp&1)==1){
subarray.add(nums[index]);
}
index++;
temp = temp >>1;
}
arrays.add((ArrayList<Integer>) subarray);
}
return arrays;
}
}