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 给外婆敬酒祝福语简短