登录
首页 >  Golang >  Go问答

二数和算法

来源:stackoverflow

时间:2024-04-30 11:54:24 241浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《二数和算法》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

下面算法的时间复杂度是 o(log(n)),但我只是好奇 for 循环的时间复杂度是多少?

func TwoNumberSum(array[] int, target int)[] int {
    sort.Ints(array)
    left, right: = 0, len(array) - 1
    for left < right && left >= 0 && right < len(array) {
        if array[left] + array[right] == target {
            return [] int {
                array[left], array[right]
            }
        } else if array[left] + array[right] < target {
            left += 1
        } else {
            right -= 1
        }
    }
    return [] int {}
}

正确答案


该声明不正确。对于 input = [1,2,3,4,5]target = 9left 将遍历整个数组。 for 循环以及整个算法的复杂度为 O(n)

编辑:我刚刚注意到额外的 sort() 调用。排序会使算法的复杂度为O(nlogn)

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>