题目
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
注意预定义的节点结构体 注意不要用int,会溢出,测试样例有一个坑爹的长的一笔的数据,简单的大数相加,逐位放入链表,返回链表,这里使用带头结点的单链表方便操作,但返回的时候是第一个非空节点
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* l3 = new ListNode(0);
int a = 0, b = 0;
ListNode* tail = l3;
int bit = 0;
while (l1 || l2|| bit) {
a = 0;
b = 0;
if(l1) {
a = l1->val;
l1 = l1->next;
}
if(l2) {
b = l2->val;
l2 = l2->next;
}
//cout << a << " " << b << " " << bit << endl;
ListNode* tmp = new ListNode((a+b+bit)%10);
bit = (a+b+bit)/10;
tail->next = tmp;
tmp->next = NULL;
tail = tmp;
}
return l3->next;
}
};