以前是写在面试记录里的,题目有点开始多了就分割出来专门来一篇了面试
实现一个函数printNum,接受一个参数n,输出n个递增天然数
· 输出的天然数不能含有7(17,71,176)或为7的倍数(14,63);若是含有7或为7的倍数,则输出下一个天然数;
· 支持屡次调用,从0开始,每次自上次调用的末尾天然数继续打印
· 示例:数组
printNum(); // 0 printNum(2); // 1,2 printNum(5); // 3,4,5,6,8 printNum(17); // 9,10,11,...,26,29,30
实现一个函数sum,运算结果能够知足以下预期结果:promise
sum(1, 2, 3).valueOf(); // 6 sum(2, 3)(2).valueOf(); // 7 sum(1)(2)(3)(4).valueOf(); // 10 sum(2)(4, 1)(2).valueOf(); // 9
答案连接函数
实现一个优先队列,使得能够这样使用:fetch
const priorityQueue = new PriorityQueue(); priorityQueue.enqueue('优先级2-1', 2); priorityQueue.enqueue('优先级1-1', 1); priorityQueue.enqueue('优先级1-2', 1); priorityQueue.enqueue('优先级3-1', 3); priorityQueue.enqueue('优先级2-2', 2); priorityQueue.enqueue('优先级1-3', 1); priorityQueue.print(); // 按优先级顺序输出 priorityQueue.dequeue(); // 输出最前(相似arr.shift)
硬币找零问题(动态规划相关):有面额为d1...dn的硬币,和要找零的钱数,找出所需最小硬币个数的方案,例如:美国有如下面额(硬币):d1=1, d2=5, d3=10, d4=25,若是要找36美分的零钱,所需最少硬币是[1, 10, 25],即知足以下输出:url
const minCoinChange = new MinCoinChange([1, 5, 10, 25]); console.log(minCoinChange.makeChange(36)); // [1, 10, 25] const minCoinChange2 = new MinCoinChange([1, 3, 4]); console.log(minCoinChange2.makeChange(6)); // [3,3]