gpt4 book ai didi

arrays - 如何在 Swift 中从数组创建给定大小的唯一数组?

转载 作者:行者123 更新时间:2023-11-30 10:22:01 25 4
gpt4 key购买 nike

给定一个 Int 数组和所需的数组大小,myFunction 应返回所有可能的唯一数组的数组。初始数组中的所有 Int 都应该是唯一的。如果一个数组的所有成员都不能在另一个数组中找到,则该数组被认为是唯一的。

func myFunction(array : [Int], arraySize : Int) -> [[Int]] {
//... What to put here?
}

最佳答案

如果我正确理解你的问题,那么你想创建所有 k 元素具有 n 个元素的给定集合的子集。这可以通过递归完成

  • 将第一个元素 a[1] 与该元素的所有 (k-1) 元素子集组合起来剩余元素a[2] ... a[n]
  • 添加 a[2] ... a[n] 的所有 (k) 元素子集。

Swift 代码(有点通用,因此它不仅可以用于整数):

func allSubsetsOf<T>(elements: [T], withCardinality k : UInt,
combinedWith prefix : [T] = [], startingWithIndex j : Int = 0) -> [[T]] {

if k == 0 {
return [prefix]
}

if j < elements.count {
let first = elements[j]
return allSubsetsOf(elements, withCardinality: k-1, combinedWith: prefix + [first], startingWithIndex : j+1)
+ allSubsetsOf(elements, withCardinality: k, combinedWith: prefix, startingWithIndex: j+1)
} else {
return []
}
}

示例:

let result1 = allSubsetsOf([1, 2, 3, 4, 5], withCardinality: 3)
println(result1)
// [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]]

let result2 = allSubsetsOf(["a", "b", "c", "d"], withCardinality: 2)
println(result2)
// [[a, b], [a, c], [a, d], [b, c], [b, d], [c, d]]

关于arrays - 如何在 Swift 中从数组创建给定大小的唯一数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25749941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com