2. 两数相加
https://leetcode.cn/problems/add-two-numbers/description/?envType=study-plan-v2&envId=top-100-liked
我们很容易想到用一个变量surpass记录进位,然后从后往前遍历,但是这样需要处理很多边界情况,所以我们再指定尾节点tail,然后从前往后遍历,这样只需要处理一个边界情况,就是某一条链表遍历完了但另一条还没有,我们让tail等于遍历完的链表的尾部然后将剩余的节点接上去就行.
public class Solution {
public static class ListNode {
int val;
Solution.ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
public static void main(String[] args) {
int[] arr1 = {2,4,9};
int[] arr2 = {5,6,4,9};
ListNode head1 = new ListNode(arr1[0]);
ListNode currNode = head1;
for (int i = 1; i < arr1.length; i++) {
ListNode node = new ListNode(arr1[i]);
currNode.next = node;
currNode = node;
}
ListNode head2 = new ListNode(arr2[0]);
currNode = head2;
for (int i = 1; i < arr2.length; i++) {
ListNode node = new ListNode(arr2[i]);
currNode.next = node;
currNode = node;
}
new Solution().addTwoNumbers(head1, head2);
}
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
// 定义进位
int surpass = 0;
// 定义两个指针,分别指向两个链表的头节点
ListNode curr1 = l1, curr2 = l2, tail = null;
// 当两个链表都不为空时,进行循环
while(curr1 != null && curr2 != null){
// 计算两个节点的和,加上进位
int sum = curr1.val + curr2.val + surpass;
// 计算进位
surpass = sum / 10;
// 计算当前节点的值
sum = sum % 10;
// 将当前节点的值赋给curr1
curr1.val = sum;
// 将tail指向curr1
tail = curr1;
// 将curr1指向下一个节点
curr1 = curr1.next;
// 将curr2指向下一个节点
curr2 = curr2.next;
}
// 当curr1不为空时,进行循环
while(curr1 != null){
// 计算当前节点的和,加上进位
int sum = curr1.val + surpass;
// 计算进位
surpass = sum / 10;
// 计算当前节点的值
sum = sum % 10;
// 将当前节点的值赋给curr1
curr1.val = sum;
// 将tail的下一个节点指向curr1
tail.next = curr1;
// 将tail指向curr1
tail = curr1;
// 将curr1指向下一个节点
curr1 = curr1.next;
}
// 当curr2不为空时,进行循环
while(curr2 != null){
// 计算当前节点的和,加上进位
int sum = curr2.val + surpass;
// 计算进位
surpass = sum / 10;
// 计算当前节点的值
sum = sum % 10;
// 将当前节点的值赋给curr2
curr2.val = sum;
// 将tail的下一个节点指向curr2
tail.next = curr2;
// 将tail指向curr2
tail = curr2;
// 将curr2指向下一个节点
curr2 = curr2.next;
}
// 如果还有进位,则创建一个新的节点,并将tail的下一个节点指向该节点
if(surpass != 0){
tail.next = new ListNode(surpass);
}
// 返回l1
return l1;
}
}
原文地址:https://blog.csdn.net/release_lonely/article/details/143893946
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!