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

leetcode:子集(dfs+位运算两种解法)

思路:1.主体思路跟“组合”一致2.退出条件改为tempindex超出3.只要长度小于等于len都可以加入res代码:funcsubsets(num

在这里插入图片描述
思路:
1.主体思路跟“组合”一致
2.退出条件改为tempindex超出
3.只要长度小于等于len都可以加入res

代码:

func subsets(nums []int) [][]int {res = [][]int{}numsLen := len(nums)find(0, []int{}, nums, numsLen)return res
}func find(tempindex int, tempres, nums []int, k int) {fmt.Println(tempres)if tempindex > k {return}if len(tempres) <&#61; k {comb :&#61; make([]int, len(tempres))copy(comb, tempres)res &#61; append(res, comb)}for i :&#61; tempindex; i < k; i&#43;&#43; {tempres &#61; append(tempres, nums[i])find(i &#43; 1, tempres, nums, k)tempres &#61; tempres[:len(tempres) - 1]}
}

位运算代表01&#xff1a;

func subsets(nums []int) (ans [][]int) {n :&#61; len(nums)//从0到1<for mask :&#61; 0; mask < 1<<n; mask&#43;&#43; {set :&#61; []int{}for i, v :&#61; range nums {//看看mask指示的第i位&#xff08;从右到左&#xff09;是否取1//是的话加入这个index的valueif mask>>i&1 > 0 {set &#61; append(set, v)}}ans &#61; append(ans, append([]int(nil), set...))}return
}


推荐阅读
author-avatar
锦瑟刻下两段缠绵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有