Javascript排序因输入数量较多而有所不同

时间:2019-07-13 21:07:40

标签: javascript sorting

我正在编写一个代码挑战的解决方案,我认为从逻辑角度看代码似乎还不错。

问题提示: 有些人在公园里连续站着。它们之间有不能移动的树。您的任务是按照人们的身高不降序重新排列他们的高度,而不移动树木。人可能很高!

E.G: 对于= = return Stepper( key: Key("mysuperkey-" + items.length.toString()), ... );
输出应该是
sortByHeight(a)= [-1, 150, 190, 170, -1, -1, 160, 180]

[-1, 150, 160, 170, -1, -1, 180, 190]


我在做什么-
1)遍历inp数组并存储非-1或树的值。
2)对缓冲区数组进行排序。
3)再次循环遍历inp数组,如果value不为-1,则将其替换为缓冲区数组中的第一个元素,然后删除该元素。

有效输入-

function sortByHeight(a) {
    var buff = [];
    for(var i=0; i<a.length; i++){
        if(a[i] !== -1)
            buff.push(a[i]);
    }

    if(buff.length === 0)
        a = a.sort((v1, v2) => (v1 > v2))

    else{
        buff = buff.sort((a, b) => (a > b));
        for(i=0; i<a.length; i++){
            if(a[i] !== -1){
                a[i] = buff[0];
                buff.shift();
            }
        }
    }

    return a;
}

此输入失败,无法完成其他输入-

输入:

a: [-1, 150, 190, 170, -1, -1, 160, 180]
a: [-1, -1, -1, -1, -1]
a: [4, 2, 9, 11, 2, 16]
a: [2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1]
a: [23, 54, -1, 43, 1, -1, -1, 77, -1, -1, -1, 3]
a: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]

我的输出:

a: [964, 735, 365, 864, 764, 689, 163, 886, 63, 263, 333, 299, 451, 62, 983, 3, 340, 115, 626, 576, 598, 407, 189, 975, 874, 78, 650, 598, 198, 522, 857, 501, 48, 982, 758, 630, 313, 647, 358, 351, 288, 29, 386, 377, 736, 743, 899, 596, 263, 374]

预期输出:

[78, 374, 365, 263, 29, 288, 163, 351, 63, 263, 333, 299, 358, 62, 313, 3, 340, 115, 48, 198, 189, 630, 407, 377, 386, 647, 735, 598, 576, 522, 596, 501, 626, 689, 451, 598, 650, 975, 964, 886, 864, 764, 874, 758, 736, 743, 899, 857, 982, 983]

0 个答案:

没有答案