Viết hàm sắp xếp mảng số nguyên theo quy tắc: số chẵn tăng dần, số lẻ giảm dần, nhưng vị trí tương đối giữa chẵn/lẻ giữ nguyên.
Ví dụ: [12,17,15,24,1,6] → [6,17,15,12,1,24].
Ví dụ
const arr = [12, 17, 15, 24, 1, 6];
const specialSort = (nums = []) => {
const oddArr = [], evenArr = [];
for (let i = 0; i < nums.length; i++) {
if (nums[i] & 1) oddArr.push(i);
else evenArr.push(i);
}
nums.sort((a, b) => a - b);
let odd = oddArr.length - 1, even = 0;
const res = [];
for (let i = 0; i < nums.length; i++) {
if (nums[i] & 1) res[oddArr[odd--]] = nums[i];
else res[evenArr[even++]] = nums[i];
}
return res;
};
console.log(specialSort(arr));
Kết quả
[6, 17, 15, 12, 1, 24]