最近在复习数据结构与算法,乘此机会用JavaScript重写一下常见的数据结构和算法。
Node版本 >= 13
运行测试用例
- 在集成终端中打开测试用例
node xxx
运行测试测试用例
-
JavaScript实现栈
-
JavaScript实现队列
代码见apply文件夹
1. 利用栈结构的特点封装实现十进制转换为二进制的方法
输入 100
输出 ’1100100‘
2. 判断合法的出栈顺序
例:入栈顺序 6,5,4,3,2,1 判断出栈顺序 5,4,3,6,1,2 是否合法
输入: [6,5,4,3,2,1] , [5,4,3,6,1,2]
输出:true
输入:[6,5,4,3,2,1] , [3,4,6,5,2,1]
输出:false
思路伪代码:
arr1依次进入栈stack
1.每次入栈都和arr2[0]比较,若stack栈顶==arr2[0],则stack.pop(),arr2.shift().
2.弹出时 继续比较stack栈顶 是否等于 arr2[0],等于则重复2步骤,不等于则重复1,2步骤
3.arr1入栈完毕时看stack是否为空,不为空则继续判断stack栈顶是否等于arr2[0]直到stack.peek()!=arr2[0] return false,否则 return true;
1. 使用队列实现小游戏:击鼓传花。
在这个游戏中,孩子们围成一个圆圈,把花尽快地传递给旁边的人。某一时刻传花停止, 这个时候花在谁手里,谁就退出圆圈结束游戏。重复这个过程,直到只剩一个孩子(胜者)。
输入: (['John','Jack','Camila','Ingrid','Carl'] , 7)
输出:Camila在击鼓传花游戏中被淘汰。 Jack在击鼓传花游戏中被淘汰。 Carl在击鼓传花游戏中被淘汰。 Ingrid在击鼓传花游戏中被淘汰。 胜利者: John