博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Add Two Numbers(stored in List)
阅读量:5207 次
发布时间:2019-06-14

本文共 2571 字,大约阅读时间需要 8 分钟。

首先,演示一个错误的reverList

1 class Solution { 2     public: 3         ListNode* reverse(ListNode* root) 4         { 5             if(NULL == root) 6                 return NULL; 7             ListNode* pCur = root; 8             ListNode* pNext = root->next; 9 10             while(pNext)11             {12                 pNext = pNext->next;13                 pCur->next->next = pCur;14                 pCur = pCur->next;15             }16             root->next = NULL;17             return pCur;18         }19 20 };

(2)--------->(3)-------->(4)----------->(5)--------->NULL

首先pCur指向2,pNext指向3;

pNext=pNext->next; pNext指向4,

pCur->next->next = pCur,然后3--->4 的指针断了, 从此pCur就自己转圈了。。。

正确的reverseList

ListNode * reverseList(ListNode* head){    if(head == NULL) return NULL;    ListNode *pre = NULL;    ListNode *cur = head;    ListNode *next = NULL;    while(cur)    {        next = cur->next;        cur->next = pre;        pre = cur;        cur = next;    }    return pre;}

 

 

 

 

这个题目也不难,注意dummy节点的使用,另外,记得最后carrybit的处理

/** * 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)        {            if(l1 == NULL)                return l2;            if(l2 == NULL)                return l1;            ListNode* p1 = l1;            ListNode* p2 = l2;            ListNode dummy(-1);            ListNode* pNew = &dummy;            int carry = 0;            int sum = 0;            while(p1 && p2)            {                sum = (p1->val + p2->val + carry)%10;                carry= (p1->val + p2->val + carry)/10;                pNew->next = new ListNode(sum);                pNew = pNew->next;                p1 = p1->next;                p2 = p2->next;            }            while(p1)            {                sum = (p1->val +  carry)%10;                carry= (p1->val + carry)/10;                pNew->next = new ListNode(sum);                pNew = pNew->next;                p1 = p1->next;            }            while(p2)            {                sum = (p2->val +  carry)%10;                carry= (p2->val + carry)/10;                pNew->next = new ListNode(sum);                pNew = pNew->next;                p2 = p2->next;            }            if(carry)            {                pNew->next = new ListNode(carry);                pNew = pNew->next;            }                         return dummy.next;        }              };

 

转载于:https://www.cnblogs.com/diegodu/p/4246326.html

你可能感兴趣的文章
iostat参数说明
查看>>
js 封装获取元素的第一个元素
查看>>
iOS 获取Home键指纹验证
查看>>
Python-Mac 安装 PyQt4
查看>>
P2571 [SCOI2010]传送带
查看>>
哈希表1
查看>>
用Data Url (data:image/jpg;base64,)将小图片生成数据流形式
查看>>
实验2-2
查看>>
C#初识
查看>>
Spider-Python爬虫之聚焦爬虫与通用爬虫的区别
查看>>
String,StringBuffer与StringBuilder的区别?? .
查看>>
JavaScript(三) 数据类型
查看>>
移动端rem布局屏幕适配插件(放js中便可使用)
查看>>
Docker
查看>>
bzoj2259 [Oibh]新型计算机
查看>>
对位与字节的深度认识
查看>>
C++编程基础二 16-习题4
查看>>
MongoDB遇到的疑似数据丢失的问题。不要用InsertMany!
查看>>
服务器被疑似挖矿程序植入107.174.47.156,发现以及解决过程(建议所有使用sonatype/nexus3镜像的用户清查一下)...
查看>>
类型“XXX”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。
查看>>