gpt4 book ai didi

algorithm - 采访 : Find Ranges of All Consecutive Numbers

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:25:00 26 4
gpt4 key购买 nike

给定一个排序数组,其中包含一些序列号和一些非序列号。编写一个算法,将此数组作为输入并返回所有连续数字的 {start, end} 列表。连续数字仅相差 1。

例如数组:

[4, 5, 6, 7, 8, 9, 12, 15, 16, 17, 18, 20, 22, 23, 24, 27]

public class Range
{
private int begin;
private int end;
public int begin { get; set; }
public int end { get; set; }
}

这里的 O(n) 解决方案似乎很明显,但有没有办法在更短的时间内完成?

最佳答案

一个解决方案是一次说出 3 个数字并查看它们之间的差异

如果差值等于3那么它们是连续的,然后再向前移动3,直到你发现差值不是3,然后你向后移动一步,如果差值是2则结束范围并且从我们有差异的前一个数字开始您的下一个范围。

在最坏的情况下,根本没有连续的数字,对于大 N,我们将迭代 n/3 次,这很重要。

编辑:

这种方法最糟糕的情况是当有两个连续的数字对时,我们需要接触所有数字,所以在这种特殊情况下它将是 O(n)。

关于algorithm - 采访 : Find Ranges of All Consecutive Numbers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27005791/

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