【LeetCode每日一题】——78.子集

news2024/11/13 11:08:34

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【解题思路】
  • 七【题目提示】
  • 八【时间频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 数组

二【题目难度】

  • 中等

三【题目编号】

  • 78.子集

四【题目描述】

  • 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
  • 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

五【题目示例】

  • 示例 1:

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

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

六【解题思路】

  • 本题是回溯算法的典型应用,关于回溯问题的处理步骤如下:
void backTracking(参数)
{
	if(终止条件)
	{
		保存结果;
		return;
	}
	for(遍历从当前位置出发的所有“路径”)
	{
		保存“路径”节点;
		backTracking(所需参数);
		回溯处理,删除上一步保存的“路径”节点,准备进行新的递归
	}
}
  • 本题也是这个处理步骤,知识不需要递归终止条件的设置,因为遍历完数组也相当于结束了
  • 最后返回结果即可

七【题目提示】

  • 1 < = n u m s . l e n g t h < = 10 1 <= nums.length <= 10 1<=nums.length<=10
  • − 10 < = n u m s [ i ] < = 10 -10 <= nums[i] <= 10 10<=nums[i]<=10
  • n u m s 中 的 所 有 元 素 互 不 相 同 nums 中的所有元素 互不相同 nums

八【时间频度】

  • 时间复杂度: O ( n × 2 n ) O(n×2^n) O(n×2n),其中 n n n为输入数组的大小,因为共 2 n 2^n 2n种状态,每种状态需要 O ( n ) O(n) O(n)的时间来构造
  • 空间复杂度: O ( n ) O(n) O(n),其中 n n n为输入数组的大小

九【代码实现】

  1. Java语言版
package Array;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author: IronmanJay
 * @Description: 78.子集
 * @CreateTime: 2022-11-24  09:02
 */
public class p78_Subsets {

    public static void main(String[] args) {
        int[] nums = {1, 2, 3};
        List<List<Integer>> res = subsets(nums);
        System.out.println("res = " + res);
    }

    public static List<List<Integer>> subsets(int[] nums) {
        List<List<Integer>> res = new ArrayList<>();
        List<Integer> path = new ArrayList<>();
        dfs_back(0, nums, res, path);
        return res;
    }

    public static void dfs_back(int start, int[] nums, List<List<Integer>> res, List<Integer> path) {
        res.add(new ArrayList<>(path));
        for (int i = start; i < nums.length; i++) {
            path.add(nums[i]);
            dfs_back(i + 1, nums, res, path);
            path.remove(path.size() - 1);
        }
    }

}
  1. C语言版
#include<stdio.h>
#include<stdlib.h>

void dfs_back(int* nums, int numsSize, int** res, int* returnSize, int** returnColumnSizes, int start, int* path, int pathSize)
{
	res[*returnSize] = (int*)malloc(sizeof(int) * pathSize);
	memcpy(res[*returnSize], path, sizeof(int) * pathSize);
	(*returnColumnSizes)[*returnSize] = pathSize;
	(*returnSize)++;
	for (int i = start; i < numsSize; i++)
	{
		path[pathSize++] = nums[i];
		dfs_back(nums, numsSize, res, returnSize, returnColumnSizes, i + 1, path, pathSize);
		pathSize--;
	}
}

int** subsets(int* nums, int numsSize, int* returnSize, int** returnColumnSizes)
{
	*returnSize = 0;
	*returnColumnSizes = (int*)malloc(sizeof(int) * 10001);
	int** res = (int**)malloc(sizeof(int*) * 10001);
	int* path = (int*)malloc(sizeof(int) * numsSize);
	dfs_back(nums, numsSize, res, returnSize, returnColumnSizes, 0, path, 0);
	return res;
}

/*主函数省略*/

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/31157.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚太C题详细版思路修改版(精)

今年的亚太A、B题的感觉难度不低&#xff0c;其难度已经可以与电工妈杯这种比赛的赛题难度相提并论了。因此&#xff0c;这次预计选C题的人数可能不少&#xff0c;这对于大家来说也是个好消息。塞翁失马焉知非福&#xff0c;难对于大家来说都难&#xff0c;只要自己放平心态&am…

计算机组成原理习题课第一章-1(唐朔飞)

计算机组成原理习题课第一章-1&#xff08;唐朔飞&#xff09; ✨欢迎关注&#x1f5b1;点赞&#x1f380;收藏⭐留言✒ &#x1f52e;本文由京与旧铺原创&#xff0c;csdn首发&#xff01; &#x1f618;系列专栏&#xff1a;java学习 &#x1f4bb;首发时间&#xff1a;&…

【Pygame实战】这游戏有毒,刷爆朋友圈:小编已与病毒版贪吃蛇大战了三百回合,最高分339?

导语 Hello&#xff0c;大家好呀&#xff01;我是木木子吖&#xff5e; 一个集美貌幽默风趣善良可爱并努力码代码的程序媛一枚。 听说关注我的人会一夜暴富发大财哦~ &#xff08;哇哇哇 这真的爱&#x1f60d;&#x1f60d;&#xff09; 所有文章完整的素材源码都在&#…

Android中JVM七大垃圾收集器【解析】

概述 GC垃圾收集器的种类 新生代&#xff1a;年轻代用来存放最近创建的对象老年代&#xff1a;主要存放应用程序中生命周期长的内存对象永久代&#xff1a;内存的永久保存区域&#xff08;类和元数据&#xff09;&#xff0c;GC不参与回收Serial收集器&#xff1a;串行收集器…

web网页设计—— 中国餐饮协会(HTML+CSS)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

CentOS8使用阿里云yum源异常问题及解决方法

镜像下载、域名解析、时间同步请点击 阿里云开源镜像站 Linux安装git时发生如下错误 [rootraoyuuuu maven]# dnf install git Repository extras is listed more than once in the configuration Repository epel is listed more than once in the configuration CentOS-8 - B…

关于windows的文件监控管理系统(Java)

目 录 摘 要 I Abstract II 1.绪论 1 1.1课题背景 1 1.2系统开发的目的和意义 2 1.3国内外概况 3 1.4研究主要内容 3 2.windows文件监控管理系统相关技术介绍 4 2.1 API 4 2.2 API HOOK 5 2.3 Java 5 2.4 DLL 6 2.4 Windows系统的Socket编程 6 2.4.1使用WinSock API 6 2.4.2 使…

【 C++ 】IO流

目录 1、C语言的输入输出 2、流是什么 3、CIO流 3.1、C标准IO流 3.2、C文件IO流 文件操作步骤 以二进制的形式操作文件 以文本的形式操作文件 4、stringstream的介绍 1、C语言的输入输出 C语言中我们用到的最频繁的输入输出方式就是scanf()和printf()。 scanf()&#xff1a…

[前端基础] JavaScript 基础篇(下)

DOM 和 BOM DOM 指的是文档对象模型&#xff0c;它指的是把文档当做一个对象来对待&#xff0c;这个对象主要定义了处理网页内容的方法和接口。BOM 指的是浏览器对象模型&#xff0c;它指的是把浏览器当做一个对象来对待&#xff0c;这个对象主要定义了与浏览器进行交互的法和…

Node核心模块之Stream

Node.js诞生之初就是为了提高IO性能&#xff0c;文件操作系统和网络模块实现了流接口&#xff0c;Node.js中流就是处理流式数据的抽象接口。 那么应用程序为什么使用流来处理数据&#xff1f; 常见问题 同步读取资源文件&#xff0c;用户需要等待数据读取完成资源文件最终一次…

【Windows】windows10时间显示秒数

一般情况下windows10的电脑时间只显示小时和分钟&#xff0c;但是有的用户想要时间显示更加精细&#xff0c;那么windows10时间怎么显示秒呢&#xff1f;大家可以通过修改注册表的方式进行设置&#xff1a;打开注册表编辑器&#xff0c;定位到Advanced&#xff0c;右键新建DWOR…

【第十四篇】Camunda系列-多人会签【多实例】

多人会签 Multiple Instance 也叫多实例任务。 1.会签说明 多实例活动是为业务流程中的某个步骤定义重复的一种方式。在编程概念中,多实例与 for each 结构相匹配:它允许对给定集合中的每个项目按顺序或并行地执行某个步骤或甚至一个完整的子流程。 多实例是一个有额外属性…

注解(Annotation)

注解 注解也被称为元数据&#xff08;MateDate&#xff09;,用于修饰或解释包&#xff0c;类&#xff0c;方法&#xff0c;属性&#xff0c;构造器&#xff0c;局部变量等数据信息和注释一样&#xff0c;注解不会影响程序逻辑&#xff0c;但是注解可以被编译或者运行&#xff…

如何定义需求优先级?

本文将围绕以下问题展开&#xff1a;1、什么是需求优先级排序&#xff0c;目的是什么&#xff1f;2、优先级排序的8大依据&#xff1b;3、需求优先级排序面临的挑战&#xff1b;4、一些优秀的需求优先级排序工具。 一、什么是需求优先级排序&#xff0c;目的是什么&#xff1f;…

Mybatis-plus 用法

本文主要介绍 mybatis-plus 这款插件&#xff0c;针对 springboot 用户。包括引入&#xff0c;配置&#xff0c;使用&#xff0c;以及扩展等常用的方面做一个汇总整理&#xff0c;尽量包含大家常用的场景内容。 关于 mybatis-plus 是什么&#xff0c;不多做介绍了&#xff0c;看…

大一作业HTML网页作业:简单的旅游 1页 (旅游主题)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 游景点介绍 | 旅游风景区 | 家乡介绍 | 等网站的设计与制作 | HTML期末大学生网页设计作业&#xff0c;Web大学生网页 HTML&#xff1a;结构 CSS&…

94-98-Hadoop-MapReduce工作流程(重要)

Hadoop-MapReduce工作流程&#xff08;重要&#xff09;&#xff1a; 上面的流程是整个 MapReduce 最全工作流程&#xff0c;但是 Shuffle 过程只是从第 7 步开始到第 16 步结束&#xff0c;具体 Shuffle 过程详解&#xff0c;如下&#xff1a; &#xff08;1&#xff09;Map…

Java 动态判断数组维数并取值

一、背景 技术交流群里有同学提了一个看似基础但挺有意思的问题。 问题描述&#xff1a; 一个对象是一个未知的数组类型&#xff0c;可能是 short 二维数组&#xff0c;可能是 int 的三维数组等。 诉求&#xff1a; 想要遍历修改&#xff08;获取&#xff09;它的值不想写太多…

springboot 接入 logback.xml 彻底搞出一个超级完整加注释的版本-可在生产环境直接使用

目录 介绍 开搞 先logback.xml相关的 pom.xml application.yml 配置 启动配置 类中编写 引入 Slf4j logback.xml 重点介绍 logback项目名称 最大保存时间 365天 lOGGER PATTERN 根据个人喜好选择匹配 控制台输出 滚动文件 过滤器 可以选择自己要的日志级别 不选…

【机器学习数据集制作】视频转图片(代码注释,思路推导)

目录数据集效果资源下载实现思路代码实战总结『机器学习』分享机器学习0基础的数据集制作过程。 欢迎关注 『机器学习』 系列&#xff0c;持续更新中 欢迎关注 『机器学习』 系列&#xff0c;持续更新中 数据集效果 资源下载 拿来即用&#xff0c;所见即所得。 项目仓库&#…