gpt4 book ai didi

Swift 4.2 改进算法中的 "O"成本

转载 作者:可可西里 更新时间:2023-11-01 01:56:18 24 4
gpt4 key购买 nike

大家早上好

我正在尝试使用 Swft 4.2 制作一个小算法,并具有尽可能低的成本“O”

我的问题给出了我将传递给您的代码。如果你有什么办法可以降低计算成本。

你要做的算法是:

  • 数组 [Int] 被传递给“arrayMultiplication”函数。假设是[2,3,4,5]
  • 我们必须将所有元素相乘每个位置,除了相同的位置。在这种情况下,它将是:[3x4x5,2x4x5, 2x3x5, 2x3x4] = [60, 40, 30, 24]

我的代码如下:

import UIKit



class ViewController: UIViewController {



var arrayInts: [Int] = [2,3,4,5]

var arrayMultiplication: [Int] = []



override func viewDidLoad() {

super.viewDidLoad()

arrayMultiplication = arrayMultiplication(array: &arrayInts)

print("\(arrayMultiplication)")

}



func arrayMultiplication(array: inout [Int])-> [Int]{

var arrayMult:[Int] = []

for i in 0...array.count - 1 {

let remove = array.remove(at: i)

let mult = array.reduce (1, {$0 * $1})

arrayMult.append(mult)

array.insert(remove, at: i)

}

return arrayMult

}
}

想法是降低该算法的“O”。

谢谢

改进算法中的“O”成本

最佳答案

这是一个可能的解决方案。

var array = [2,3,4,5]

if let indexOf0 = array.firstIndex(of: 0) {
array.remove(at: indexOf0)
let product = array.reduce(1, *)
var result = Array(repeating: 0, count: array.count + 1)
result[indexOf0] = product
print(result)
} else {
let product = array.reduce(1, *)
let result = array.map( {product/$0} )
print(result)
}
  • 如果数组中有0个,计算不为零的乘积,其他乘积全部设为0。(注意:如果有多个0,则每个元素都设为0。
  • 如果不是,则计算乘积并遍历数组一次,同时将乘积除以迭代元素并存储结果。

感谢@Hamish 指出疏忽。

关于Swift 4.2 改进算法中的 "O"成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53081152/

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