题解 | #牛群的能量值#
牛群的能量值
https://www.nowcoder.com/practice/fc49a20f47ac431981ef17aee6bd7d15
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param l1 ListNode类 * @param l2 ListNode类 * @return ListNode类 */ public ListNode addEnergyValues (ListNode l1, ListNode l2) { ListNode pre = new ListNode(-1); ListNode cur = pre; int up = 0; // 进位 while (l1 != null && l2 != null) { // 相加和 int val = (l1.val + l2.val + up); // 更新进位 up = val >= 10 ? 1 : 0; // 节点值 cur.next = new ListNode(val % 10); // 继续遍历链表 cur = cur.next; l1 = l1.next; l2 = l2.next; } // 遍历剩余的链表 while (l1 != null) { int val = l1.val + up; up = val >= 10 ? 1 : 0; cur.next = new ListNode(val % 10); cur = cur.next; l1 = l1.next; } while (l2 != null) { int val = l2.val + up; up = val >= 10 ? 1 : 0; cur.next = new ListNode(val % 10); cur = cur.next; l2 = l2.next; } // 链表遍历结束,进位为1,补充一位 if (up == 1) { cur.next = new ListNode(1); } return pre.next; } }
本题考查的是链表的遍历和加法运算,设置一个进位,每次遍历新节点都要将进位加到新值中,然后更新进位,其实就是很简单的加法运算,最后要注意的就是当链表遍历结束的时候,如果进位为1,说明需要新增一个节点