博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 78. 子集
阅读量:7145 次
发布时间:2019-06-29

本文共 1104 字,大约阅读时间需要 3 分钟。

leetcode 78. 子集

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

输入: nums = [1,2,3]输出:[  [3],  [1],  [2],  [1,2,3],  [1,3],  [2,3],  [1,2],  []]复制代码

分享这道题的原因是他可以递归又可以循环~ 非是小弟不堪言,实乃代码才是天~

递归
func subsets(nums []int) [][]int {    re := [][]int{}    //go的闭包很好玩,可以不用传很多变量了~    var dfs func(j int, r []int)    dfs = func(j int, r []int) {    	//这里是需要把切片复制一份,不然可能会被后序操作影响到        tmp := append([]int{},r...)        re = append(re,tmp)        //回溯的标准写法哈哈,感觉像套公式一样,但是确实比较好理解        for i := j; i
循环

这个方法是借鉴了别人分享的~感觉思路很清晰。

func subsets(nums []int) [][]int {    res := make([][]int, 0)    res = append(res, []int{})    for i := len(nums)-1; i >= 0; i-- {        length := len(res)        for j := 0; j < length; j++ {            tmp := make([]int, 0)            tmp = append(tmp, nums[i])            //这里的...的意思是把切片中的所有元素一个个地添加到tmp中            tmp = append(tmp, res[j]...)            res = append(res, tmp)        }    }    return res}复制代码

好了,今天的题目虽然比较简单,但是我们可以发现其中蕴含着的智慧。再次呼吁大家一起来做做算法题,不一定是程序员哦,各行各业都可以来玩玩,真的很锻炼思维的。

算法梦想家,来跟我一起玩算法,玩音乐,聊聊文学创作,咱们一起天马行空!

转载于:https://juejin.im/post/5cb84b555188251b960f5470

你可能感兴趣的文章
VMware+Windgb+Win7内核驱动调试
查看>>
initWithFrame、initWithCoder、awakeFromNib的区别和调用次序 & UIViewController生命周期 查缺补漏...
查看>>
客户端请求新页面
查看>>
VMware安装CentOS时,无法以图形界面安装解决办法
查看>>
SpringMvc文件资源防止被外链链接
查看>>
Spring 4 官方文档学习(十一)Web MVC 框架
查看>>
使用 Spring Boot 快速构建 Spring 框架应用--转
查看>>
Quartz 2D
查看>>
Eclipse 快捷键
查看>>
VC++ 设置软件开机自启动的方法
查看>>
MyBatis学习(三)、动态SQL语句
查看>>
PLSQL:[1]plsql中文乱码,显示问号
查看>>
将十进制转成十六进制
查看>>
【题目】英文字符进行频率的统计,直方图输出
查看>>
Ztree手风琴效果(第三版)
查看>>
「坐上时光机,查找编译压缩后的文件最初的样子」gulp-sourcemaps 使用说明
查看>>
java 泛型中 T、E ... 和 问号(通配符)的区别
查看>>
MyEclipse使用总结——MyEclipse去除网上复制下来的来代码带有的行号
查看>>
java service wrapper日志参数设置及优化
查看>>
android build.prop详解
查看>>