输入一个有重复数字的多维乱序数组,要求输出一个去重升序的一维数组
const qs = (arr, left = 0, right = arr.length - 1) => {
if (arr.length > 1) {
let mid = getMid(arr, left, right)
if (left < mid - 1) {
qs(arr, left, mid - 1)
}
if (mid < right) {
qs(arr, mid, right)
}
}
return arr
}
const getMid = (arr, left, right) => {
let midIndex = arr[Math.floor(left + (right - left) / 2)]
let i = left, j = right
while (i <= j) {
while (arr[i] < midIndex) i++
while (midIndex < arr[j]) j--
if (i <= j) {
[arr[i], arr[j]] = [arr[j], arr[i]]
i++
j--
}
}
return i
}
const sourceData = [234, 6, 3426, [2, 4, 6443, 6, [1, 2, 3]]]
Array.prototype.flat() - MDN
let tempData = Array.from(new Set(sourceData.flat(Infinity)))
let targetData = qs(tempData)