gpt4 book ai didi

algorithm - 如果数组中存在 N 或第一个数字
转载 作者:塔克拉玛干 更新时间:2023-11-03 02:29:02 24 4
gpt4 key购买 nike

我有这个问题:

Given an unsorted array of positive integers and an integer N, return N if N existed in the array or the first number that is smaller than N.

在接受采访时想知道解决该问题的最有效算法是什么?

我已经给出了两种使用散列和排序数组的方法,但它不是正确且有效的方法。如果有人能为这个问题提供最佳算法,我将不胜感激。

最佳答案

我假设这是一种 C 风格的语言;如果不是,请更新问题以反射(reflect)语言。

如果数组未排序,那么您别无选择,只能(可能)完全遍历数组以查找 N,因为任何排序操作都将比简单遍历数组花费更长的时间数组(除了通过“盲目运气”找到元素)。与此类似的东西可能是最有效的(除非我遗漏了什么)

int retVal = -1;

for(int i = 0; i < ARRAY_LENGTH; i++)
{
if(array[i] == N) return N;
if(retVal == -1 && array[i] < N) retVal = array[i];
}

return retVal;

按照其他地方的建议,您可以修改

if(retVal == -1 && array[i] < N) retVal = array[i];

if(retVal < array[i] && array[i] < N) retVal = array[i];

为了得到小于N的最大值,而不是简单的第一个。

关于algorithm - 如果数组中存在 N 或第一个数字 <N,则 : Given an unsorted array of positive integers and an integer N, 的高效算法返回 N,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1488152/

24 4 0

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