Leetcode Hot100 刷题笔记
链表 1. 两数相加 题目链接:两数相加 【思路】 引入一个临时变量 carry 记录进位的值,默认是0。开一个新的链表 l ,同时遍历两个链表的值。l1.val + l2.val + carry = l.val。注意,最后有多余的进位时,要新增一个节点。 整个过程可以用递归来实现,递归的边界条件是当 l1 、l2 为 null 且 carry 为 0 的时候 。然后,返回值是 new ListNode(carry % 10, addTwo(l1, l2, carry / 10)) 。其中, carry % 10 表示当前值, carry / 10 表示进位值。计算过程是l1 和 l2 都获取 val 和 carry 相加,并且向前遍历。 【伪代码】 // l1 和 l2 为当前遍历的节点,carry 为进位, 默认为0 private ListNode addTwo(ListNode l1, ListNode l2, int carry) { if (l1 == null && l2 == null && carry == 0) { // 递归边界 return null; } int s = carry; if (l1 != null) { s += l1.val; // 累加进位与节点值 l1 = l1.next; } if (l2 != null) { s += l2.val; l2 = l2.next; } // s 除以 10 的余数为当前节点值,商为进位 return new ListNode(s % 10, addTwo(l1, l2, s / 10)); } 2. 删除链表的倒数第 N 个结点 题目链接:删除链表的倒数第 N 个结点 ...