首页 > 试题广场 >

集合的所有子集(二)

[编程题]集合的所有子集(二)
  • 热度指数:3105 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个整数数组 nums ,其中可能包含重复元素,请你返回这个数组的所有可能子集。

返回的答案中不能包含重复的子集,将答案按字典序进行排序。

数据范围:数组长度满足 ,数组中元素大小满足
示例1

输入

[1,2]

输出

[[],[1],[1,2],[2]]
示例2

输入

[1]

输出

[[],[1]]
package main
import "sort"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums int整型一维数组 
 * @return int整型二维数组
*/
func subsets( nums []int ) [][]int {
    sort.Ints(nums)
    ans:=[][]int{}
    var dfs func([]int,int)
    dfs=func(path []int,idx int){
        tmp:=make([]int,len(path))
        copy(tmp,path)
        ans=append(ans,tmp)
        for i:=idx;i<len(nums);i++{
            if i>idx&&nums[i]==nums[i-1]{
                continue
            }
            path=append(path,nums[i])
            dfs(path,i+1)
            path=path[:len(path)-1]
        }
    }
    dfs([]int{},0)
    return ans
}

发表于 2023-03-10 21:37:22 回复(0)

问题信息

难度:
1条回答 2369浏览

热门推荐

通过挑战的用户

查看代码