gpt4 book ai didi

arrays - 计数未排序数组中出现的正值,负值和0值的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-01 22:35:18 25 4
gpt4 key购买 nike

下面的作品,但我将如何优化呢?我想遍历数组会变得越来越昂贵。
我可以创建一个原始数组的映射表来存储每个值的出现次数,然后在另一个循环中检查这些值是否为+ /-/ 0,但这甚至更糟。

package main
import (
"fmt"
)

func main() {
arr := []int{2, 5, 6, 7, 8, 2, 4, 1, 1, 1, 2, -2, -2, 2, 2, 3, -1, 0, 0, 0, 0, 2, 5, 4, 9, 8, 7, 2, -3, -7}
var p, n, z int = 0, 0, 0
for _, v := range arr {
if v > 0 {
p++
} else if v < 0 {
n++
} else if v == 0 {
z++
}
}
fmt.Println(p, n, z)
}

最佳答案

如果您的输入结构是未排序的数组,则O(n)是您可以做的最好的事情,也就是说,遍历该数组,将每个元素进行一次比较。

如果是选项,则可以使用两个数组和一个整数,一个数组用于负数,一个数组用于正数,以及一个整数以计算零个数。然后,不再需要计数,您只需获取数组的长度即可。

关于arrays - 计数未排序数组中出现的正值,负值和0值的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58385366/

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