fiting!(ง •_•)ง
var arrTest = [1, [2, 3, [4]], 5, 6, [7, 8], [[9, [10, 11], 12], 13], 14];
function FlatArr(arr) {
while(arr.some(t => Array.isArray(t))) {
arr = ([]).concat(...arr)
}
return arr
}
console.log(FlatArr(arrTest));
var add = function(m) {
var temp = function(n) {
return add(m+n)
}
temp.toString = function () {
return m
}
return temp
}
var a = add(1)(2)(3)(4)
console.log(a)
var invertTree = function(root) {
if(!root) return null
let tmp = root.left
root.left = root.right
root.right = tmp
invertTree(root.left)
invertTree(root.right)
return root
};
//解构赋值
var invertTree = function(root) {
if(root !== null){
[root.left, root.right] = [invertTree(root.right), invertTree(root.left)]
}
return root
};
var findKthLargest = function(nums, k) {
nums.sort(function(a, b){return (b - a)}).slice(0,k)
return nums[k-1]
};
// 快速排序
var quickSort = (arr, left, right) => {
if(left >= right) {
return arr
}
let i = left,
j = right,
base = arr[left]
while(i < j) {
while(i < j && arr[j] >= base) {
j--
}
while(i < j && arr[i] <= base) {
i++
}
if(i < j) {
let tmp = arr[i]
arr[i] = arr[j]
arr[j] = tmp
}
}
arr[left] = arr[i]
arr[i] = base
quickSort(arr, left, i-1)
quickSort(arr, i+1, right)
return arr
}
var findKthLargest = function(nums, k) {
quickSort(nums, 0, nums.length-1)
return nums[nums.length-k]
};
堆排序原理:
- 将原序列(n个)转化成一个大顶堆
- 设置堆的有效序列长度为n
- 将堆顶元素(第一个有效序列)与最后一个子元素(最后一个有效序列)交换,并有效序列长度减1
- 堆化有效序列,使有效序列重新称为一个大顶堆
- 重复以上2步,直到有效序列的长度为 1,排序完成
// 冒泡排序
function bubbleSort(arr) {
let flag;
for(var i = arr.length-1; i >= 0; i--) {
flag = false
for(var j = 0; j < i; j++) {
arr[j] > arr[j+1] && (flag = true) && swap(arr, j, j+1)
}
if(!flag) {
break
}
}
return arr
}
// 快速排序
function quickSort(arr) {
quick(arr, 0, arr.length-1)
}
function quickSort(arr, left, right) {
if(left >= right) {
return arr
}
let i = left,
j = right,
base = arr[left]
while(i < j) {
// 注意顺序不能变
while(i < j && arr[j] >= base) {
j--
}
while(i < j && arr[i] <= base) {
i++
}
if(i < j) {
swap(arr, i, j)
}
}
swap(arr, i, left)
quickSort(arr, left, i-1)
quickSort(arr, i+1, right)
return arr
}
let arr = [5,2,4,1,3,6,0]
quickSort(arr)
console.log(arr)