JavaScript中恰好三个唯一重复元素的排序数组
假设我们有一个Numbers数组,其中包含恰好三个元素的任何频率-像这样的1、0和1-
const arr = [1, 1, 0, -1, 1, 0, -1, 1, 0, 0, 1];
我们需要编写一个包含一个这样的数组的JavaScript函数。函数应该简单地对这个特殊数组进行排序,即不使用任何额外的数组来存储值。
唯一的条件是我们的函数应该是线性时间函数(仅使用一次迭代)。
示例
以下是代码-
const arr = [1, 1, 0, -1, 1, 0, -1, 1, 0, 0, 1];
const sortSpecialArray = (arr = []) => {
const swap = (a, b) => {
let middle = arr[a]
arr[a] = arr[b]
arr[b] = middle
};
let left = 0;
let middle = 0;
let right = arr.length-1;
while(middle <= right){
if(arr[middle] === -1){
swap(left++, middle++);
}else if(arr[middle] === 0){
middle++;
}else if(arr[middle] === 1){
swap(right--, middle);
}
};
};sortSpecialArray(arr);console.log(arr);输出结果以下是控制台输出-
[ -1, -1, 0, 0, 0, 0, 1, 1, 1, 1, 1 ]
热门推荐
10 香港老妈结婚祝福语简短
11 毕业立体贺卡祝福语简短
12 简短新年年会祝福语
13 评论小品祝福语大全简短
14 恭喜师兄结婚祝福语简短
15 员工集体辞职祝福语简短
16 高中新生祝福语 简短
17 装修祝福语男生搞笑简短
18 生日开业蛋糕祝福语简短