在 JavaScript 中對恰好包含三個唯一重複元素的陣列進行排序
假設我們有一個數字陣列,其中包含任何頻率的恰好三個元素 - 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 ]
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP