福州网站营销,在线简历,搜搜网站提交入口,深圳的网站制作公司给你两个 非空 的链表#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的#xff0c;并且每个节点只能存储 一位 数字。
请你将两个数相加#xff0c;并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外#xff0c;这两个数都不会以 0 …
给你两个 非空 的链表表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的并且每个节点只能存储 一位 数字。
请你将两个数相加并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外这两个数都不会以 0 开头。
输入l1 [2,4,3], l2 [5,6,4]
输出[7,0,8]
解释342 465 807.示例 2
输入l1 [0], l2 [0]
输出[0]示例 3
输入l1 [9,9,9,9,9,9,9], l2 [9,9,9,9]
输出[8,9,9,9,0,0,0,1]
存在进位进位最多为1
双指针法就可以了
package TOP21_30;import Util.ListNode;// 两数相加
public class Top26 {public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {if (l1 null || l2 null) {return null;}ListNode res new ListNode(0);ListNode cur res;int inc 0;while (l1 ! null l2 ! null) {int count l1.val l2.val inc;int resNum count;if (count 10) {resNum count - 10;inc 1;}if(count10){inc 0;}ListNode node new ListNode(resNum);cur.next node;cur cur.next;l1 l1.next;l2 l2.next;}// 存在进位while (inc 1) {if (l1 null l2 null) {ListNode node new ListNode(1);node.next null;cur.next node;return res.next;}if (l1 null l2 ! null) {int count l2.val inc;int resNum count;if (count 10) {resNum count - 10;inc 1;} else {inc 0;}ListNode node new ListNode(resNum);cur.next node;cur cur.next;l2 l2.next;}if (l1 ! null l2 null) {int count l1.val inc;int resNum count;if (count 10) {resNum count - 10;inc 1;} else {inc 0;}ListNode node new ListNode(resNum);cur.next node;cur cur.next;l1 l1.next;}}// 不存在进位if (inc 0) {cur.next l1 null ? l2 : l1;}return res.next;}public static void main(String[] args) {int[] num1 {2, 4,3};int[] num2 {5,6,4};ListNode list1 ListNode.setNodes(0, num1);ListNode list2 ListNode.setNodes(0, num2);ListNode list3 addTwoNumbers(list1,list2);ListNode.printListData(list3);}
}harryptter / LeetcodeTop100 · GitCode