热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[Swift]LeetCode78.子集|Subsets

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9933967.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

Given a set of distinct integers, nums, return all possible subsets (the power set).

Note: The solution set must not contain duplicate subsets.

Example:

Input: nums = [1,2,3]
Output:
[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]
]


给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。

说明:解集不能包含重复的子集。

示例:

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


8ms

1 class Solution {
2 func subsets(_ nums: [Int]) -> [[Int]] {
3 var res = [[Int]()]
4 subset(&res, nums)
5 return res
6 }
7
8 private func subset(_ res: inout [[Int]], _ nums: [Int]) {
9 guard let n = nums.first else { return }
10 res += res.map { $0 + [n] }
11 subset(&res, Array(nums[1..<nums.count]))
12 }
13 }


12ms

1 class Solution {
2 func subsets(_ nums: [Int]) -> [[Int]] {
3 if nums.count &#61;&#61; 0 {
4 return []
5 }
6
7 var result &#61; [[Int]]()
8 var subset &#61; [Int]()
9 //call backtracking
10 backtracking(nums, &result, &subset, 0)
11 return result
12 }
13
14 func backtracking(_ nums: [Int], _ result: inout [[Int]], _ subset: inout [Int], _ startIndex: Int) {
15 result.append(subset)
16 for i in startIndex..<nums.count {
17 subset.append(nums[i])
18 backtracking(nums, &result, &subset, i &#43; 1)
19 subset.removeLast()
20 }
21 }
22 }


12ms

1 class Solution {
2 func subsets(_ nums: [Int]) -> [[Int]] {
3 var res &#61; [[Int]]()
4 rec_subset([Int](), nums, &res)
5 res.append([Int]())
6 return res
7 }
8
9 func rec_subset(_ firstNums: [Int], _ restNum: [Int], _ res: inout [[Int]]) {
10 if restNum.count &#61;&#61; 0 {
11 if firstNums.count !&#61; 0 {
12 res.append(firstNums)
13 }
14 return
15 }
16
17 var tempRestNums &#61; restNum;
18 var tempFirstNums &#61; firstNums;
19 let firstVal &#61; tempRestNums.remove(at: 0)
20 tempFirstNums.append(firstVal)
21 rec_subset(tempFirstNums, tempRestNums, &res)
22
23 var zeroFirstNums &#61; firstNums;
24 rec_subset(zeroFirstNums, tempRestNums, &res)
25 }
26 }


16ms

1 class Solution {
2 var result &#61; [[Int]]()
3 func subsets(_ nums: [Int]) -> [[Int]] {
4 let count &#61; nums.count
5 for i in 0...count {
6 var changeArray &#61; Array(repeatElement(0, count: i))
7 combine(&changeArray, nums, 0, i, 0, count)
8 }
9 return result
10 }
11
12 func combine(_ combineArray: inout [Int], _ nums: [Int], _ i: Int, _ total: Int, _ j: Int, _ maxJ: Int) {
13 if i &#61;&#61; total {
14 result.append(combineArray)
15 return ;
16 }
17
18 for k in j..<maxJ {
19 combineArray[i] &#61; nums[k]
20 combine(&combineArray, nums, i &#43; 1, total, k &#43; 1, maxJ)
21 }
22 }
23 }


16ms

1 class Solution {
2 func subsets(_ nums: [Int]) -> [[Int]] {
3 guard nums.count > 0 else {return []}
4 var subsets &#61; [[Int]]()
5 subsets.append([])
6
7 for num in nums {
8 subsets &#43;&#61; subsets.map{$0 &#43; [num]}
9 }
10 return subsets
11 }
12 }


28ms

1 class Solution {
2 func subsets(_ nums: [Int]) -> [[Int]] {
3 if nums.isEmpty {
4 return []
5 }
6
7 var res: [[Int]] &#61; [[]]
8 helper(nums, &res)
9 return res
10 }
11
12 fileprivate func helper(_ nums: [Int], _ res: inout [[Int]]) {
13
14 guard let first &#61; nums.first else {
15 return
16 }
17
18 res &#43;&#61; res.map{$0 &#43; [first]}
19 helper(Array(nums[1..res)
20 }
21 }

 

转:https://www.cnblogs.com/strengthen/p/9933967.html



推荐阅读
  • java.lang.Class.getDeclaredMethod()方法java.lang.Class.getDeclaredMethod()方法用法实例教程-方法返回一个Met ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • imnewtotheswiftandxcodeworld,soimhavingaproblemtryingtointegrateapackagetomypro ... [详细]
  • swift中的uitable
    下面是一个静态的tableview于图可知有两个section头是11..和22..,其中222是一个tableviewcell!并且从图可知道样式是leftD ... [详细]
  • Flow 生态案例学习 | Emerald City为Flow上DAO、教育和开发铺平道路
    原文链接:https://www.onflow.org/post/emer ... [详细]
  • 集合set集合是可变的容器集合内的数据对象都是唯一的(不能重复多次的)集合是无序的存储结构,集合中的数据没有先后关系集合内的元素必须是不可 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
author-avatar
mobiledu2502887381
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有