关于javascript: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))

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理