让我们假设一个数组
示例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]);
}
}
我想就是这样!
测试并让我知道我忘记了哪个边缘案例。