/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
#include <iostream>
using namespace std; class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { if ((l1 == NULL) && (l2 == NULL))
{
cout << "Invalid input!";
return NULL;
} ListNode* fir = l1;
ListNode* sec = l2;
ListNode* p = new ListNode();
ListNode* thr = p;//为了不干预原指针,我分别设了fir,sec,thr三个临时指针 while (fir != NULL || sec != NULL)
{
int a = , b = ;//分别检查fir,sec
if (fir != NULL)
{
a = fir->val;
fir = fir->next;
}
if (sec != NULL)
{
b = sec->val;
sec = sec->next; } ListNode* cur = new ListNode();//设了个新节点
cur->val = (thr->val + a + b) / ;
thr->val = (thr->val + a + b) % ;
if (fir == NULL && sec == NULL && cur->val == )//如果接下来没有数要加了,那就是最顶位为0,为了不让显示,我就直接跳出了,这个事当时恶心到我了
break;
thr->next = cur;
thr = cur;
} return p; }
};
分析:
考察链表和编程能力
这个时间复杂度为O(max(m,n)),空间复杂度也是O(max(m,n))
总结:
编程还是不够熟练,循环里两个if没有第一时间想到,还有为了让顶位为0不显示,我居然写了好几遍,尴尬。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)