找到排序数组值之间的最大差异

Tob*_*eek 4 javascript language-agnostic arrays algorithm

我有一个可能看起来像这样的数组......

var 数组 = 数组(1,4,7,8,12,15);

数组中的值将始终是整数,并且总是会增加,或者可以与之前相同,但至少不会变少。

现在我想循环遍历数组并找出哪个“步骤”之间有最大的差异,所以在我的示例中,这将是数组键 4&5,因为从 8-12 == 4...但也可能发生这种情况这将是具有相同值的多个步骤,假设我的数组是这样的..

var 数组 = 数组(1,5,7,8,12,15);

那么就会是 0&1 和 4&5....

我正在寻找一个可以返回我这个的函数...哦,它必须是 PureJs...

我希望有一个人可以帮助我。

gal*_*dre 5

我不确定你到底想要什么。但如果你想要最大的跳跃:

var max=0;
for (i=1; i<array.length; i++)
    max = Math.max(max,array[i]-array[i-1]);
Run Code Online (Sandbox Code Playgroud)

如果您想要发生最大跳跃的第一个位置:

var max=0;
var firstLoc=0;
for (i=1; i<array.length; i++)
{
    curJump = array[i]-array[i-1];
    if (curJump > max) 
    {
        firstLoc = i;
        max = curJump;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您想要发生此跳转的最后位置:

var max=0;
var lastLoc=0;
for (i=1; i<array.length; i++)
{
    curJump = array[i]-array[i-1];
    if (curJump >= max) 
    {
        lastLoc = i;
        max = curJump;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您想要一个包含发生最大跳跃的所有位置的数组:

var max=0;
var locs = [];
for (i=1; i<array.length; i++)
{
    curJump = array[i]-array[i-1];
    if (curJump == max)
    {
        locs.push(i);
    } else if (curJump > max)
    {
        locs = [i];
        max = curJump;
    }
}
Run Code Online (Sandbox Code Playgroud)