您现在的位置是:主页 > news > 北京石景山网站建设/百度搜索引擎seo

北京石景山网站建设/百度搜索引擎seo

admin2025/4/27 0:06:26news

简介北京石景山网站建设,百度搜索引擎seo,nat123做视频网站,表白网站在线生成免费题目重述 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums [1,2,3] 输出:[[],[1],[2…

北京石景山网站建设,百度搜索引擎seo,nat123做视频网站,表白网站在线生成免费题目重述 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums [1,2,3] 输出:[[],[1],[2…

题目重述

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

示例 1:

输入:nums = [1,2,3]
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

示例 2:

输入:nums = [0]
输出:[[],[0]]

提示:

1 <= nums.length <= 10
-10 <= nums[i] <= 10
nums 中的所有元素 互不相同

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/subsets
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

Java AC

回溯法

class Solution {private List<List<Integer>> result = new ArrayList<>();public List<List<Integer>> subsets(int[] nums) {dfs(nums,0,new ArrayList<>());return result;}void dfs(int[] nums,int index,List<Integer> tmpList){result.add(new ArrayList<>(tmpList));for (int i = index; i < nums.length; i++) {tmpList.add(nums[i]);dfs(nums,i+1,tmpList);tmpList.remove(tmpList.size()-1);}}
}

幂解法

思路

  • 例如123,那么就是2的三次幂,即8
  • 即000到111二进制,那么如果二进制字符串上有1,就代表是要取的
class Solution {public List<List<Integer>> subsets(int[] nums) {double m = Math.pow(2,nums.length);List<List<Integer>> result = new ArrayList();for(int i=0;i<m;i++){List<Integer> tmpList = new ArrayList<>();String bit = Integer.toBinaryString(i);StringBuilder sb = new StringBuilder();for(int j=0;j<nums.length-bit.length();j++){sb.append("0");}sb.append(bit);for(int j=0;j<sb.toString().length();j++){if(sb.toString().charAt(j)=='1'){tmpList.add(nums[j]);}}result.add(tmpList);  }return result;}
}