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

本文共 2520 字,大约阅读时间需要 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;        }              };

 

转载地址:http://nbcjm.baihongyu.com/

你可能感兴趣的文章
Tomcat性能调优方案
查看>>
懒人笔记电脑发热控制
查看>>
IOS 保存读取Token到沙盒
查看>>
ISO/IEC 13818 -1 ~ -7之间的区别
查看>>
Ubuntu Server 安装部署 Cacti 服务器监控
查看>>
只要3分钟,Python生成器原理详解
查看>>
AIX下的FACL配置
查看>>
CloudStack: unable to add the host
查看>>
生产中DNS BIND客户端配置优化
查看>>
perl变量使用范围非常经典详解
查看>>
shell笔记之sed编辑器的基础用法(中)
查看>>
tomcat 6/7 maven 自动发布+热部署方法
查看>>
分享一个不错的iptables脚本
查看>>
去掉内容里的HTML标签属性
查看>>
DOCKER windows 7 详细安装教程
查看>>
《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项
查看>>
我的友情链接
查看>>
IDC
查看>>
Oracle 11g R2 RAC dbca新建实例报错
查看>>
Linux服务器--1.DNS服务器
查看>>