leetcode 算法相关

1.快速排序

取出数组第一个元素,以这个数为基准,比它小的放左边,比它大的放右边,然后对左右两边的数组分别递归,得到一个升序数组:

const quickSort = (arr) => {
  if (arr.length <= 1) return arr
  let firstItem = arr.shift()
  let leftArr = []
  let rightArr = []
  for (let item of arr) {
    if (item <= firstItem) {
      leftArr.push(item)
    } else {
      rightArr.push(item)
    }
  }
  return quickSort(leftArr).concat(firstItem, quickSort(rightArr))
}

console.log(quickSort([5, 17, 4, 22, 54, 55, 32]))

2.爬楼梯

爬楼梯每次可以爬 1 层或者 2 层,那么爬 n 层有多少种方法:

const climb = (n) => {
  if (n === 1) return 1
  if (n === 2) return 2
  // 如果要爬到第 n 层,可以分为从第 n-1 层爬上去或者 n-2 层直接爬上去两种
  return climb(n - 1) + climb(n - 2)
}

console.log(climb(3), climb(4), climb(5))

你可能感兴趣的:(javascript)