本文共 841 字,大约阅读时间需要 2 分钟。
题目原文:
Given a set of distinct integers, nums, return all possible subsets.Note:
Elements in a subset must be in non-descending order. The solution set must not contain duplicate subsets. 题目大意: 给出一个无重复元素的数组,求出他的所有子集。 要求: 子集中的元素不能是递减的,且结果中不能有重复的子集。 题目分析: 既然是不重复的那就好办了,求数组的长度n,并遍历一个n位长的比特串,其中哪一位为1,原数组的哪个元素就加入子集。 源码:(language:java)public class Solution { public List
> subsets(int[] nums) { Arrays.sort(nums); List
> subsets = new ArrayList
>(); int count = 1< subset = new ArrayList (); int index=0; int i=j; while(i!=0) { if(i%2==1) subset.add(nums[index]); index++; i=i>>1; } subsets.add(subset); } return subsets; }}
成绩:
2ms,beats 59.76%,众数3ms,44.63% Cmershen的碎碎念: 计算机是基于二进制运算的,所以能用bit manipulate方法解决的问题往往都比较方便。但此题复杂度达到 O(2n) ,使用位运算比单纯的回溯也仅仅是易于理解。转载地址:http://wbomb.baihongyu.com/