当前位置: 首页 > web >正文

LeetCode 第78题:子集

给你一个整数数组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 中的所有元素 互不相同

解题思路:

迭代法实现子集枚举:记录序列中元素的总数为n,原序列中的每个数字ai的状态可能有两种,在子集中和不在子集中。用1代表在子集中,0代表不在子集中。每一个子集可以对应一个长度为n的0/1序列,第i位表示ai是否在子集中。例如:n=3,a={5,2,9}

0/1 序列    子集    0/1 序列对应的二进制数
000    {}    0
001    {9}    1
010    {2}    2
011    {2,9}    3
100    {5}    4
101    {5,9}    5
110    {5,2}    6
111    {5,2,9}    7

枚举mask∈【0,2^n-1】,mask的二进制表示一个0/1序列,按照这个0/1序列在原集合当中取数。

int** subsets(int* nums,int numsSize,int* returnSize,int** returnColumnSizes)
{int** ans =malloc(sizeof(int*) * (1<<numsSize));*returnColumnSizes = malloc(sizeof(int)*(1<<numsSize));*returnSize = 1<<numsSize;int t[numsSize];for(int mask = 0;mask<(1<<numsSize);mask++){int tSize = 0;for(int i=0;i<numsSize;i++){if(mask & (1<<i))   t[tSize++] = nums[i];}int* tmp = malloc(sizeof(int) * tSize);memcpy(tmp, t, sizeof(int) * tSize);(*returnColumnSizes)[mask] = tSize;ans[mask] = tmp;}return ans;
}

子集数量一共是2^n个,包括空集和本身集合。

  • 首先计算出2^n是多少
  • for循环进行i递增,从0到2^n-1,将每个数字转换为二进制数字
  • 将二进制数字每一位的数字对应输出。每一轮循环输出一组数组,即子集。
http://www.xdnf.cn/news/14454.html

相关文章:

  • android CALL 之 RIL、TELEDCOM、PHONE
  • 详细讲解BUUCTF-ciscn_2019_n_1
  • 6.11小测(html、css)
  • 【数据结构中哈希函数与哈希表】
  • 中国风系列简约淡雅通用PPT模版分享
  • 【Linux手册】进程的状态:从创建到消亡的“生命百态”
  • K8s集群平台
  • MySQL事务:从原理到实践
  • Elasticsearch9 + 通义大模型实现语义检索操作详解
  • LoRA核心公式
  • 语言模型是怎么工作的?通俗版原理解读!
  • 2.1 Windows VS2019编译FFmpeg 4.4.1
  • Qt QComboBox下拉多选
  • 【项目】仿muduo库one thread one loop式并发服务器前置知识准备
  • OmniMeetProTrack 全维会议链智能追录系统——山东大学软件学院创新实训项目博客(六)
  • 机器学习实验报告4-Logistic 回归算法
  • 如何设计一个既提供绘图Tools又提供example_data的MCP服务器:
  • vulnerable_docker_containement(hard难度)MSF内网穿透、docker逃逸、wpscan爆破。
  • vscode python debugger 如何调试老版本python
  • 论文略读:Personality Alignment of Large Language Models
  • Git里面Stash Changes和UnStash Changes使用
  • LiteRT-LM边缘平台上高效运行语言模型
  • 【Android】 BindService源码流程
  • 如何在Windows上使用qemu安装ubuntu24.04服务器?
  • 408第一季 - 数据结构 - B树与B+树
  • 数据结构---B树
  • 卷积神经网络中的通道注意力机制
  • [游戏实时地图] 地图数据 | 兴趣点数据 | 虚幻引擎SDK接口
  • 软考 系统架构设计师系列知识点之杂项集萃(89)
  • UFS Layout Guide (UFS 2.x)