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 ]
热门推荐
7 简短的二胎祝福语
10 简短霸气女儿生日 祝福语
11 祝福语高考小众诗句简短
12 元旦祝福语20秒简短
13 老师过年祝福语大全 简短
14 一生祝福语简短
15 产检祝福语简短霸气
16 朋友店开张祝福语简短
17 生日爱情祝福语大全简短
18 朋友女儿生日祝福语 简短