首页 > 其他分享 >力扣回溯 深度优先搜索dfs之78. 子集

力扣回溯 深度优先搜索dfs之78. 子集

时间:2024-02-11 11:24:23浏览次数:35  
标签:nums int backtrack List dfs 力扣 result tempList 78

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

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

 

示例 1:

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

示例 2:

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

 

class Solution {     public List<List<Integer>> subsets(int[] nums) {         List<List<Integer>> result = new ArrayList<>();         backtrack(result, new ArrayList<>(), nums, 0);         return result;     }
    private void backtrack(List<List<Integer>> result, List<Integer> tempList, int[] nums, int start) {         result.add(new ArrayList<>(tempList));         for (int i = start; i < nums.length; i++) {             tempList.add(nums[i]);             backtrack(result, tempList, nums, i + 1);             // 从tempList中移除最后一个元素。             tempList.remove(tempList.size() - 1);         }     } }   class Solution {
    public List<List<Integer>> subsets(int[] nums) {         List<List<Integer>> result = new ArrayList<>();         backtrack(result, new ArrayList<>(), nums, 0);         return result;     }     public void backtrack(List<List<Integer>> result, List<Integer> subList,             int[] nums, int start) {         result.add(new ArrayList<>(subList));         for (int i = start; i < nums.length; i++) {             subList.add(nums[i]);             backtrack(result, subList, nums, i + 1);             subList.remove(subList.size() - 1);         }
    } }

标签:nums,int,backtrack,List,dfs,力扣,result,tempList,78
From: https://www.cnblogs.com/JavaYuYin/p/18013278

相关文章

  • P7824 「RdOI R3」毒水
    题意简述有\(n\)杯水,其中有一杯有毒。你可以拿不超过\(maxk\)只小白鼠进行实验,你可以喂给小白鼠若干瓶水,若其中有毒水,则小白鼠死亡。但是其中有且仅有一只变异鼠,变异鼠的死亡状态恰好与普通鼠相反(即若其中有毒水则生存,否则死亡)。你需要求出毒水的编号。\(n=1000,maxk=15\)。......
  • 力扣递归 两道简单题合成一道中等题之148. 排序链表
    递归归并排序,先找到终点,再合并两个链表 给你链表的头结点 head ,请将其按升序排列并返回排序后的链表。 示例1:输入:head=[4,2,1,3]输出:[1,2,3,4]示例2:输入:head=[-1,5,3,4,0]输出:[-1,0,3,4,5]示例3:输入:head=[]输出:[]/** *Definitionforsingl......
  • 力扣快慢双指针之876. 链表的中间结点
    给你单链表的头结点head,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 示例1:输入:head=[1,2,3,4,5]输出:[3,4,5]解释:链表只有一个中间结点,值为3。示例2:输入:head=[1,2,3,4,5,6]输出:[4,5,6]解释:该链表有两个中间结点,值分别为3......
  • P9478 [NOI2023] 方格染色题解
    题解对于行操作,列操作和对角线操作,实际上仅仅只是在对若干个矩形求面积并而已,这是裸的扫描线题,套用模板即可,此时注意到对角线操作实际上是\(O(n)\)量级的矩阵面积并,因此复杂度是\(O(n\logq+q\logq)\)的量级,只能获得95pts。显然,面积并具有交换性,我们先做\(O(q\logq)\)......
  • 力扣递归之88. 合并两个有序数组
    给你两个按非递减顺序排列的整数数组 nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列。注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初......
  • 力扣递归之21. 合并两个有序链表
    将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]classSolution{publicListN......
  • 力扣刷题——SQL
    力扣刷题——高频SQL50题:题目链接:https://leetcode.cn/problems/department-top-three-salaries/?envType=study-plan-v2&envId=sql-free-50185.部门工资前三高的所有员工:表:Employee:Department+--......
  • hdu 2553 N皇后问题(DFS模板)
    Problem-2553(hdu.edu.cn)#include<iostream>#include<cstring>usingnamespacestd;intn,tot=0;intcol[12];boolcheck(intc,intr){for(inti=0;i<r;i++){if(col[i]==c||(abs(col[i]-c)==abs(i-r)))returnfalse;}r......
  • 初中英语优秀范文100篇-078Better habits, better life-更好的习惯,更好的生活
    PDF格式公众号回复关键字:SHCZFW078记忆树1Itisknowntoallthatnobodyisperfect.翻译众所周知,没有人是完美的简化记忆完美句子结构It(主语)+isknown(谓语),使用了被动语态的一般现在时,表示“这是众所周知的”toall是介词短语作状语,表示“对所有人来说”thatn......
  • CF1789F Serval and Brain Power 题解
    题目链接点击打开链接题目解法好有技巧性的题(感觉\(n\le80\)这个数据范围就很奇怪啊)首先可以发现\(k\le3\)是好做的,只要枚举断点,然后\(dp\)做一遍\(lcs\)即可,时间复杂度为\(O(n^{2k+1})\),不过严重跑不满,所以可以跑\(k=4\)的情况和\(k=2\)的情况是相同的,所以不......