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 红包祝福语简短10字
18 周六早晨祝福语简短