我一直在尝试找出解决此问题的方法,但似乎找不到正确的排序顺序。
说明:
编写一个程序,按以下方式对数字列表进行排序:
3,-2,1,0,-1,0,-2,1 => -2,-1,-2,0,0,3,1,1
'use strict';
let myNumbers = '3,-2,1,0,-1,0,-2,1';
// I receive the input as a string and split and map it into an array
let myNumbers = gets().split(',').map(Number);
我尝试按升序对所有低于零的整数应用 sort() 方法,并对上面的整数执行相反的操作,但这与预期输出中的顺序不完全一样。
我还尝试在将 sort() 应用于 0 后拼接第一个数组,然后重新排列拼接部分并将其连接起来。但是,这不适用于所有测试输入。
另一个例子: 3,-12,0,0,13,5,1,0,-2 => -12,-2,0,0,0,3,13,5,1
这个顺序的逻辑是什么?谢谢。
最佳答案
因为这听起来像是家庭作业问题或类似问题的解决方案,所以我会让您编写代码:)但我这样做的方式是在数组的一次迭代中,创建三个单独的数组:
- 负数
- 0秒
- 正数
将数组压在一起而不进行排序,你就得到了 O(N) 解决方案。
关于javascript - 按特定顺序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53892049/