腾讯云网站建设教学视频,四网合一的网站,wordpress列表模板,在线考试类网站怎么做0.声明
该题目来源于LeetCode 如有侵权#xff0c;立马删除。 解法不唯一#xff0c;如有新解法可一同讨论。
1.题目
0002两数相加 给你两个非空的链表#xff0c;表示两个非负的整数#xff0c;它们每位数字都是按照逆序的方式存储的#xff0c;并且每个节点只能存储一…0.声明
该题目来源于LeetCode 如有侵权立马删除。 解法不唯一如有新解法可一同讨论。
1.题目
0002两数相加 给你两个非空的链表表示两个非负的整数它们每位数字都是按照逆序的方式存储的并且每个节点只能存储一位数字。 请你将两个数相加并以相同形式返回一个表示和的链表。 你可以假设除了数字0之外这两个数都不会以0开头。
示例 1 输入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, 100] 内 0 Node.val 9 题目数据保证列表表示的数字不含前导零
2.代码
namespace LeetCode_0002两数相加
{class Program{static void Main(string[] args){var l1 generateList(new int[] { 1, 5, 7 });var l2 generateList(new int[] { 9, 9, 2, 9 });printList(l1);printList(l2);LeetCode_AddTwoNum latn new LeetCode_AddTwoNum();var sum latn.AddTwoNumbers(l1, l2);printList(sum);var sum1 latn.AddTwoNumbers_1(l1, l2);printList(sum1);Console.ReadKey();}static ListNode generateList(int[] vals){ListNode start null;ListNode end null;for (int i 0; i vals.Length; i){if (start null)//开头为null时{start new ListNode(vals[i]);end start;//移动指针}else{end.next new ListNode(vals[i]);end end.next;}}return start;}static void printList(ListNode l){while (l ! null){Console.Write(${l.val}, );l l.next;}Console.WriteLine();}}class LeetCode_AddTwoNum{public ListNode AddTwoNumbers(ListNode l1, ListNode l2){//定义一个节点用来存储新链表的第一个节点ListNode firstNode new ListNode(0);//定义一个循环的节点ListNode lastnode firstNode;//进位int val 0;while (l1 ! null || l2 ! null || val ! 0){int num1, num2;if (l1 null)num1 0;elsenum1 l1.val;if (l2 null)num2 0;elsenum2 l2.val;int value num1 num2 val;val value / 10;value value % 10;lastnode.next new ListNode(value);lastnode lastnode.next;if (l1 null)l1 null;elsel1 l1.next;if (l2 null)l2 null;elsel2 l2.next;}return firstNode.next;}public ListNode AddTwoNumbers_1(ListNode l1, ListNode l2){ListNode head null, tail null;int carry 0;while (l1 ! null || l2 ! null){int n1 l1 ! null ? l1.val : 0;int n2 l2 ! null ? l2.val : 0;int sum n1 n2 carry;if (head null){head tail new ListNode(sum % 10);}else{tail.next new ListNode(sum % 10);tail tail.next;}carry sum / 10;if (l1 ! null){l1 l1.next;}if (l2 ! null){l2 l2.next;}}if (carry 0){tail.next new ListNode(carry);}return head;}}class ListNode{public int val;public ListNode next;public ListNode(int val 0, ListNode next null){this.val val;this.next next;}}
}