20220222

    • 剑指 Offer 24. 反转链表
    • 快速排序
    • 146. LRU 缓存
    • 主要难点在于以O(1)时间复杂度完成get和put方法。这里需要用到哈希表(Map)
    • 一个Map对象在迭代时会根据对象元素的插入顺序来进行一个for…of循环,在每次迭代后会返回一个形式为[key, value]的数组。
    • 在JS中迭代器是一个对象,它定义一个序列,并在终止时可能返回一个返回值。迭代器有一个next()方法,该方法返回具有两个属性的对象,其中一个是value,这是序列中的next值。ex:map.keys().next().value的值是map中最早set的key值。
    • 注意:调用put方法的时候,如果key相同,value不同,不能直接set,而是要先删掉原先的键值对,在进行set。可以看成key相同时相当于做了一次get操作。
    • 144. 二叉树的前序遍历
    • 递归方法:主要看操作在哪个位置执行,在左右子树递归前就是先序遍历。
    • 非递归方法:用栈来实现。首先判断树是否为空,如果不为空则定义一个栈,先将root节点存到stack中。然后while循环stack直到栈为空时结束。先把根节点弹出栈,存入结果数组中。分别判断左右节点是否为空,不为空则先将右节点入栈,再将左节点入栈。