算法题

  • 链接:https://leetcode-cn.com/problems/find-bottom-left-tree-value/submissions/
  • 题目:
    • 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
    • 假设二叉树中至少有一个节点。
  • 解题

    1. var findBottomLeftValue = function(root) {
    2. let maxLen = 0;
    3. let res = null;
    4. const getLeftNode=function(node,curLen) {
    5. if (!node.left && !node.right) {
    6. if (curLen>maxLen) {
    7. maxLen = curLen
    8. res = node.val
    9. }
    10. }
    11. node.left && getLeftNode(node.left,curLen+1)
    12. node.right && getLeftNode(node.right,curLen+1)
    13. }
    14. getLeftNode(root ,1)
    15. return res
    16. };
  • 知道用递推,一写就废,自己写的很拧巴,待遇加强递归的终结条件

    手写题

  • 题目 ```javascript 实现一个LazyMan,可以按照以下方式调用: LazyMan(“Hank”)输出: Hi! This is Hank!

    LazyMan(“Hank”).sleep(10).eat(“dinner”)输出 Hi! This is Hank! //等待10秒.. Wake up after 10 Eat dinner~

    LazyMan(“Hank”).eat(“dinner”).eat(“supper”)输出 Hi This is Hank! Eat dinner~ Eat supper~ LazyMan(“Hank”).eat(“supper”).sleepFirst(5)输出 //等待5秒 Wake up after 5 Hi This is Hank! Eat supper

  1. - 解题
  2. ```javascript
  3. function delay(time) {
  4. return new Promise(resolve => {
  5. setTimeout(() => {
  6. resolve()
  7. }, time);
  8. })
  9. }
  10. function LazyMan(value) {
  11. const tasks = [{
  12. type: 'immediately',
  13. value: ` Hi! This is ${value}!`
  14. }]
  15. let actions = {
  16. eat(food) {
  17. tasks.push({
  18. type: 'immediately',
  19. text: ` Eat ${food}!`,
  20. value:food
  21. })
  22. return this
  23. },
  24. sleep(time) {
  25. tasks.push({
  26. type: 'delay',
  27. text: ` Wake up after ${time}!`,
  28. value:time
  29. })
  30. return this
  31. },
  32. sleepFirst(time) {
  33. tasks.unshift({
  34. type: 'delay',
  35. text: ` Wake up after ${time}!`,
  36. value:time
  37. })
  38. return this
  39. }
  40. }
  41. async function execFn (){
  42. for (let item of tasks){
  43. if (item.type ==='delay') {
  44. await delay(item.value)
  45. console.log(item.text)
  46. } else {
  47. console.log(item.value)
  48. }
  49. }
  50. }
  51. setTimeout(execFn);
  52. return actions
  53. }
  54. LazyMan("Hank").eat("dinner").sleepFirst(1000);