判断给定Python数组处理程序的时间复杂度是否为O(nlogn + nlogD)

rn206889 判断题 共 个子题

假设数组的值域范围为D,程序代码如下:

def check(n, a, k, dist):
    cnt = 1
    last = a[0]

    for i in range(1, n):
        if a[i] - last >= dist:
            cnt += 1
            last = a[i]

    return cnt >= k

def solve(n, a, k):
    a_sorted = a.copy()
    a_sorted.sort()

    l = 0
    r = a_sorted[-1] - a_sorted[0]

    while l < r:
        mid = (l + r + 1) // 2
        if check(n, a_sorted, k, mid):
            l = mid
        else:
            r = mid - 1

    return l

if __name__ == "__main__":
    a = [1, 2, 8, 4, 9]
    n = 5
    k = 3
    result = solve(n, a, k)
    print(result)
A

正确

B

错误

正在加载题目数据…
已答 /
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析
讨论
发布
登录后参与讨论 立即登录
发布讨论需先绑定并验证手机号 去绑定手机号
加载中…
我
我
回复 @
回复 @
发送
还没有人讨论,来发表第一条吧