Java—求一个数组的所有子数组

最近在忙秋招,投了各种公司,参加了各种线上笔试,在线上笔试的过程中,经常遇到一些题目,想要求得最终结果的话需要获取某一数组的所有子集(暴力破解)。

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;
    }

}

猜你喜欢

转载自blog.csdn.net/xiaomingdetianxia/article/details/77991669