用Go(Golang)编写给定的整数阵列的幂集程序的方法(附实例)

172 阅读1分钟

概述

给出一个拥有所有唯一元素的整数数组。其目的是返回该数组的幂集

Input: [1, 2]
Output: [[],[1],[2],[1,2]]

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

如果给定数组中的元素数为n,那么幂集中的元素数将是pow(2, n)。假设n是3,那么幂集中的元素数将是pow(2, n)=8。

假设我们把所有从0到(8-1)的二进制数字转换,即从0到7。

000
001
010
011
100
101
110
111

上面的每个二进制数都代表一个幂集

000 - []
001 - [1]
010 - [2]
011 - [1, 2]
100 - [3]
101 - [1, 3]
110 - [2, 3]
111 - [1, 2, 3]

程序

以下是相同的程序。

package main

import (
	"fmt"
	"math"
)

func subsets(nums []int) [][]int {

	lengthNums := len(nums)
	powerSetLength := int(math.Pow(2, float64(lengthNums)))
	output := make([][]int, 0)

	for i := 0; i < powerSetLength; i++ {

		result := make([]int, 0)
		for j := 0; j < lengthNums; j++ {
			val := int(i) & int(1<

输出

[[] [1] [2] [1 2]] [[] [1] [2] [1 2] [3] [1 3] [2 3] [1 2 3]]