题目地址:
https://www.lintcode.com/problem/add-two-numbers/description
给定两个链表,表示从个位到高位的一个数的十进制表示,求两个数的和并返回同样格式的链表。直接模拟两个数相加即可。代码如下:
public class Solution {
/**
* @param l1: the first list
* @param l2: the second list
* @return: the sum list of l1 and l2
*/
public ListNode addLists(ListNode l1, ListNode l2) {
// write your code here
int cur = 0;
ListNode dummy = new ListNode(0), prev = dummy;
while (l1 != null || l2 != null) {
if (l1 != null) {
cur += l1.val;
l1 = l1.next;
}
if (l2 != null) {
cur += l2.val;
l2 = l2.next;
}
prev.next = new ListNode(cur % 10);
prev = prev.next;
cur /= 10;
}
// 最后的进位如果是1,还需要补一下最高位
if (cur == 1) {
prev.next = new ListNode(1);
}
return dummy.next;
}
}
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
时间复杂度 ,空间 。