今天来讲解一道刷题的时候遇到过的算法题。
题目是要求求出给定数组的所有子序列:
譬如给定一个nums数组{1,2,3},它的所有子序列为{1},{2},{1,2},{3},{1,3},{2,3},{1,2,3}
譬如给定一个nums数组{1,1,3},它的所有子序列为{1},{1},{1,1},{3},{1,3},{1,3},{1,1,3}
废话不多说,直接给出以下的方法的java和python两个版本
def getAllSubArray(nums):
result=[]
count=1<<len(nums)
flag=False
for mark in range(count):
temp=[]
flag=True
for i in range(len(nums)):
if((1<<i)&mark)!=0:
flag=False
temp.append(nums[i])
result.append(temp)
return result
private static ArrayList<ArrayList<Integer>> getAllSubArray(int[] nums) {
ArrayList<ArrayList<Integer>> result=new ArrayList<>();
int mark=0;
int count=1<<nums.length;
boolean flag=false;
for (mark=0;mark<count;mark++) {
ArrayList<Integer> temp=new ArrayList<>();
flag=true;
for (int i=0;i<nums.length;i++) {
if (((1<<i)&mark)!=0) {
flag=false;
temp.add(nums[i]);