【LeetCode】Add Two Numbers

来源:互联网 发布:什么是软件界面设计 编辑:程序博客网 时间:2024/06/07 05:13

【题目】
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8

【题意】
将两个链表对应节点位置存储的数字相加,如果两个数字相加的值大于10,则到后面节点相加的结果加1,这个类似数字的相加或着大数据的相加,上面的例子可以认为是 342+465=807这样一个等式。

【代码】
Space complexity : O(n)
Time complexity : O(n)

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */ public ListNode addTwoNumbers(ListNode l1, ListNode l2) {      //把相加后的结果存放于链表1,pre1是用于最后有进位时在其后new新结点      ListNode ret = l1;      ListNode pre1 = new ListNode(0);      pre1.next = l1;      int flag = 0;      while (l1 != null && l2 != null) {          l1.val = l1.val + l2.val + flag;          flag = l1.val / 10;          l1.val = l1.val % 10;          pre1 = l1;          l1 = l1.next;          l2 = l2.next;      }      if (flag > 0) {          ListNode node = new ListNode(1);          pre1.next = node;      }      //如果链表2有剩余,接到链表1的后面      if (l2 != null) {          pre1.next = l2;          l1 = l2;      }      return ret;  }   
0 0
原创粉丝点击