当前位置:网站首页>Leetcode hot topic Hot 100 day 33: "subset"
Leetcode hot topic Hot 100 day 33: "subset"
2022-07-05 04:24:00 【Ultimate brocade】
Continue to brush LeetCode Hot topic HOT 100 The subject of , And update my blog solutions. stay csdn In my blog, I will try to explain clearly in words , relevant Java Code, you can go to my Personal blog jinhuaiyu.com View in .
subject : A subset of
Give you an array of integers nums , Elements in an array Different from each other . Returns all possible subsets of the array ( Power set ).
Solution set You can't Contains a subset of repetitions . You can press In any order Returns the solution set .
Example 1:
Input :nums = [1,2,3]
Output :[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
Example 2:
Input :nums = [0]
Output :[[],[0]]
Tips :
1 <= nums.length <= 10
-10 <= nums[i] <= 10
nums All elements in Different from each other
solution 1: Dynamic programming
We need to find the former i The set of all subsets of digits and the first i+1 The relationship between sets of all subsets of digits . Suppose the set of the former is f(i), Add numbers to each subset nums[i+1] Form a set add, be f(i+1) Namely f(i)+add. You can try this set rule by yourself .
In limine , We need to put an empty set in the set ( An empty set is a subset of all sets ), And then from 0 To traverse the nums Array , Start calculating layer by layer f(i). In each layer, the set obtained from the previous layer is copied and added with numbers nums[i], Then put back the collection .
solution 2: Binary corresponding subset
For all subsets , All individually correspond to one nums Array every take and don't take , Assume that 1 Do not take as 0, about nums by {5,2,9}, Subset empty set corresponds to binary number 000, A subset of {5,2} Corresponding to binary number 110. Altogether 2^n A subset of , It corresponds to 2^n Binary numbers (n position ,n by nums length ). And these binary numbers are continuous , Its decimal size ranges from 0 To 2^n - 1.
We can enumerate decimal values from 0 To 2^n - 1 Binary number of (n position , Front complement 0) To get all the corresponding subsets . For one of the binary numbers , If the first i Position as 1, be nums[i] Join the current subset .
To judge a decimal number m After converting to binary, the i Whether bit is bit 1, We can use it and 2^i Find the position and &. because 2^i Binary number of , Except for i Is it 1 The others are 0, If m Of the i It's also 0, Then the two are bitwise and must be 0, Otherwise 1.
solution 3: to flash back ( Depth-first search )
Depth first search , Each path corresponds to a different subset , Depth is nums.length. There are taking and not taking on each floor nums[i] Two options , Reach the leaf node ( The first n layer ) Record the subset corresponding to the current path . A lot of backtracking problems have been done before , This problem is simpler , There are only two options on each floor , You can put it first. nums[i] Join in , Then drill down , Go back and take out this number , And search down without taking the number .
Finally, The code with detailed comments is placed in my Personal blog http://jinhuaiyu.com/leetcode-subsets/
边栏推荐
- 直播预告 | 容器服务 ACK 弹性预测最佳实践
- 直播預告 | 容器服務 ACK 彈性預測最佳實踐
- CSDN正文自动生成目录
- Threejs realizes sky box, panoramic scene, ground grass
- The development of mobile IM based on TCP still needs to keep the heartbeat alive
- Ctfshow 2022 Spring Festival welcome (detailed commentary)
- Machine learning decision tree
- Convert Boolean to integer value PHP - Convert Boolean to integer value PHP
- Alibaba cloud ECS uses cloudfs4oss to mount OSS
- PHP读取ini文件并修改内容写入
猜你喜欢

Threejs Internet of things, 3D visualization of farms (II)

Use threejs to create geometry and add materials, lights, shadows, animations, and axes

函數(易錯)

【虚幻引擎UE】运行和启动的区别,常见问题分析

How to get the first few pieces of data of each group gracefully

Ctfshow web entry code audit

The scale of computing power in China ranks second in the world: computing is leaping forward in Intelligent Computing

C language course setting: cinema ticket selling management system

Components in protective circuit

如何优雅的获取每个分组的前几条数据
随机推荐
Mixed compilation of C and CC
【虚幻引擎UE】打包报错出现!FindPin错误的解决办法
level18
Threejs realizes the drawing of the earth, geographical location annotation, longitude and latitude conversion of world coordinates threejs coordinates
Burpsuite grabs app packets
[phantom engine UE] package error appears! Solutions to findpin errors
web资源部署后navigator获取不到mediaDevices实例的解决方案(navigator.mediaDevices为undefined)
Network layer - forwarding (IP, ARP, DCHP, ICMP, network layer addressing, network address translation)
Threejs Internet of things, 3D visualization of farms (I)
直播预告 | 容器服务 ACK 弹性预测最佳实践
TPG x AIDU | AI leading talent recruitment plan in progress!
Common features of ES6
网络安全-记录web漏洞修复
Realize the attention function of the article in the applet
美国5G Open RAN再遭重大挫败,抗衡中国5G技术的图谋已告失败
C26451: arithmetic overflow: use the operator * on a 4-byte value, and then convert the result to an 8-byte value. To avoid overflow, cast the value to wide type before calling the operator * (io.2)
A solution to the problem that variables cannot change dynamically when debugging in keil5
Longyuan war "epidemic" 2021 network security competition web easyjaba
Convert Boolean to integer value PHP - Convert Boolean to integer value PHP
Moco is not suitable for target detection? MsrA proposes object level comparative learning target detection pre training method SOCO! Performance SOTA! (NeurIPS 2021)...