根据数组元素的索引对最接近已知元素的数组元素进行排序



让我们假设一个数组

示例1:

let arr = [101,102,104,103,105]
known_element = 104;
//Output  [104,102,103,101,105]

示例2:

let arr = [4,6,3,5,1,9,2,7,8]
known_element = 9;
//Output  [9,1,2,5,7,3,8,6,4]

以这种方式对上面的数组进行排序,

  • known_element应始终位于第0个元素
  • 第二,第三。。元素应该与known_element最接近它的索引而不是值

注意:排序应该基于最接近known_element的索引。

首先找到已知数字的位置是有意义的

var pos = arr.indexOf(known_element);

然后我们将上下循环,从最近到最远得到数字。让我们看看哪一边的长度更长。

var length = Math.max(pos, arr.length - pos + 1) 

好的,我们的结果数组已经准备好了(要填充(,让我们循环

var result = [known_element];
for (var i = 1; i < length; i++) {
if (pos- i >= 0) {
result.push(arr[pos - i])
}
if (pos + i < arr.length) {
result.push(arr[pos + i]);
}
}

我想就是这样!

测试并让我知道我忘记了哪个边缘案例。

最新更新