当前位置:实例文章 » C#开发实例» [文章]LeetCode-C#-0002.两数相加

LeetCode-C#-0002.两数相加

发布人:shili8 发布时间:2024-01-06 22:33 阅读次数:72

题目描述:
给定两个非空链表,表示两个非负整数。数字以相反的顺序存储,每个节点包含一个数字。将这两个数字相加并以链表的形式返回。

示例:
输入:(2 ->4 ->3) + (5 ->6 ->4)
输出:7 ->0 ->8解释:342 +465 =807代码示例:

csharppublic class ListNode {
 public int val;
 public ListNode next;
 public ListNode(int val=0, ListNode next=null) {
 this.val = val;
 this.next = next;
 }
}

public class Solution {
 public ListNode AddTwoNumbers(ListNode l1, ListNode l2) {
 ListNode dummyHead = new ListNode(0);
 ListNode p = l1, q = l2, curr = dummyHead;
 int carry =0;
 while (p != null || q != null) {
 int x = (p != null) ? p.val :0;
 int y = (q != null) ? q.val :0;
 int sum = carry + x + y;
 carry = sum /10;
 curr.next = new ListNode(sum %10);
 curr = curr.next;
 if (p != null) p = p.next;
 if (q != null) q = q.next;
 }
 if (carry >0) {
 curr.next = new ListNode(carry);
 }
 return dummyHead.next;
 }
}


代码注释:
1. 定义了一个ListNode类,用于表示链表节点。
2. 定义了一个Solution类,其中包含了AddTwoNumbers方法,用于实现两数相加的功能。
3. 在AddTwoNumbers方法中,使用了dummyHead节点作为结果链表的头节点,curr节点用于遍历结果链表,carry用于记录进位。
4. 使用while循环遍历两个输入链表,同时进行相加操作,并将结果存储在新的链表中。
5. 最后判断是否有进位,如果有则在结果链表的末尾添加一个新节点。

其他信息

其他资源

Top