SOURCE

// 第一题
// 1. 有一个数组,已知其所有元素都在1到N之间(包括1和N),用你最熟悉的语言写段代码找出1到N这N个数里不在这个数组里边的数。 N为10-10_000_000
// 例如输入:
// 10
// 1 2 3 4 7 9 10
// 输出:
// 5 6 8
function fn1(num, arr) {
  if (num < 10) return
  if (num > 10000000) return
  let newarr = []
  for (let i = arr[0], j = 0; i < num; i++, j++) {
    if (!arr.includes(i)) {
      newarr.push(i)
    }
  }
  console.log(newarr)
  return newarr
}
fn1(20, [1, 3, 4, 7, 9, 10, 15, 18])

// 第二题
// 2. 有一个英文单词字符串,请统计每个单词的出现频次, 按频次由高到低排序, 频次相同的按单词字典序排序。
// 例如输入:
// this is an apple.
// 输出:
// an: 1
// apple: 1
// is: 1
// this: 1

function fn2(str) {
  const arr = str
    .split(/ |,/) // 分割
    .filter(item => {
      // 去空
      return item
    })
    .sort() // 排序
  const obj = {}
  for (let i = 0, len = arr.length; i < len; i++) {
    if (!obj[arr[i]]) {
      // 第一次出现
      obj[arr[i]] = 1
    } else {
      obj[arr[i]]++
    }
  }
  var newObj = Object.keys(obj).sort((a, b) => {
    return obj[b] - obj[a]
  })

  for (key in newObj) {
    console.log(newObj[key] + ':' + obj[newObj[key]])
  }
}
fn2('this is an apple, that is a pear')

// 第三题
// 3. 求斐波拉契数列的第N项。 fib(1) = fib(2) = 1, fib(n) = fib(n-1) + fib(n - 2)
// 例如输入:
// 5
// 输出:
// 5
function Fibonacci(n) {
  if (n > 1) {
    return Fibonacci(n - 1) + Fibonacci(n - 2)
  }
  return n
}
Fibonacci(5)
console 命令行工具 X clear

                    
>
console