合并两个有序链表

image.png

  1. /**
  2. * Definition for singly-linked list.
  3. * function ListNode(val, next) {
  4. * this.val = (val===undefined ? 0 : val)
  5. * this.next = (next===undefined ? null : next)
  6. * }
  7. */
  8. /**
  9. * @param {ListNode} list1
  10. * @param {ListNode} list2
  11. * @return {ListNode}
  12. */
  13. var mergeTwoLists = function(l1, l2) {
  14. if (l1 === null) {
  15. return l2;
  16. } else if (l2 === null) {
  17. return l1;
  18. } else if (l1.val < l2.val) {
  19. l1.next = mergeTwoLists(l1.next, l2);
  20. return l1;
  21. } else {
  22. l2.next = mergeTwoLists(l1, l2.next);
  23. return l2;
  24. }
  25. };

面试题 08.06. 汉诺塔问题

image.png

  1. var hanota = function(A, B, C) {
  2. const n = A.length;
  3. // 将A中的n个移动到C
  4. const move = (n, A, B, C) => {
  5. if (n === 1) {
  6. C.push(A.pop());
  7. return;
  8. }
  9. // 将A中的n-1个移动到B
  10. move(n - 1, A, C, B);
  11. // 将A剩余的一个移动到C
  12. C.push(A.pop());
  13. // 将B中的n-1个移动到C
  14. move(n - 1, B, A, C);
  15. };
  16. move(n, A, B, C);
  17. };