[LeetCode] Add Two Numbers(stored in List)
首先,演示一个错误的reverList
class Solution {
public:
ListNode* reverse(ListNode* root)
{
if(NULL == root)
return NULL;
ListNode* pCur = root;
ListNode* pNext = root->next;
while(pNext)
{
pNext = pNext->next;
pCur->next->next = pCur;
pCur = pCur->next;
}
root->next = NULL;
return pCur;
}
};
(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(-);
ListNode* pNew = &dummy;
int carry = ;
int sum = ; while(p1 && p2)
{
sum = (p1->val + p2->val + carry)%;
carry= (p1->val + p2->val + carry)/;
pNew->next = new ListNode(sum);
pNew = pNew->next;
p1 = p1->next;
p2 = p2->next;
} while(p1)
{
sum = (p1->val + carry)%;
carry= (p1->val + carry)/;
pNew->next = new ListNode(sum);
pNew = pNew->next;
p1 = p1->next;
} while(p2)
{
sum = (p2->val + carry)%;
carry= (p2->val + carry)/;
pNew->next = new ListNode(sum);
pNew = pNew->next;
p2 = p2->next;
} if(carry)
{
pNew->next = new ListNode(carry);
pNew = pNew->next;
} return dummy.next;
} };
[LeetCode] Add Two Numbers(stored in List)的更多相关文章
- [LeetCode] Add Two Numbers 两个数字相加
You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...
- LeetCode: Add Two Numbers 解题报告
Add Two NumbersYou are given two linked lists representing two non-negative numbers. The digits are ...
- [LeetCode] Add Two Numbers题解
Add Two Numbers: You are given two non-empty linked lists representing two non-negative integers. Th ...
- [LeetCode] Add Two Numbers II 两个数字相加之二
You are given two linked lists representing two non-negative numbers. The most significant digit com ...
- LeetCode Add Two Numbers II
原题链接在这里:https://leetcode.com/problems/add-two-numbers-ii/ 题目: You are given two linked lists represe ...
- Leetcode:Add Two Numbers分析和实现
Add Two Numbers这个问题的意思是,提供两条链表,每条链表表示一个十进制整数,其每一位对应链表的一个结点.比如345表示为链表5->4->3.而我们需要做的就是将两条链表代表的 ...
- [Leetcode] Add two numbers 两数之和
You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...
- [LeetCode] Add Two Numbers
You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...
- LeetCode——Add Two Numbers
Question:You are given two linked lists representing two non-negative numbers. The digits are stored ...
随机推荐
- hdu1006 Tick and Tick (数学题 借鉴了大神的博客)
先缩短一半的时间:早上的12个小时和下午的12小时对时钟是一样的,因为时钟12小时与0小时的三针位置相同.接着就是了解到每次所有的针从有重合到再次有重合至多有一段连续的段符合三针分离度大于n.所以只要 ...
- Sd - 数据库事务
SQL92事务的隔离级别 SQL 标准用三个必须在并行的事务之间避免的现象定义了四个级别的事务隔离. 这些不希望发生的现象是: 脏读(dirty reads):一个事务读取了另一个未提交的 ...
- 【HDU 5283】Senior's Fish
http://acm.hdu.edu.cn/showproblem.php?pid=5283 今天的互测题,又爆零了qwq 考虑每个点对答案的贡献. 对每个点能产生贡献的时间线上的左右端点整体二分. ...
- CodeForces - 875D High Cry
题面在这里! 直接考虑每个位置成为最右边的最大值的位置,统计不合法区间,补集转化一下就好啦. 复杂度O(N * 30) #include<bits/stdc++.h> #define ll ...
- Codeforces 804D Expected diameter of a tree(树形DP+期望)
[题目链接] http://codeforces.com/contest/804/problem/D [题目大意] 给你一个森林,每次询问给出u,v, 从u所在连通块中随机选出一个点与v所在连通块中随 ...
- 【Tarjan算法】【DFS】Petrozavodsk Summer Training Camp 2016 Day 9: AtCoder Japanese Problems Selection, Thursday, September 1, 2016 Problem B. Point Pairs
这份代码可以作为找割边的模板.割边分割出来的部分是无向图的 边-双连通分量. 平面上2*n+1个点,在同一横坐标上的点之间可以任意两两匹配.同一纵坐标上的点之间也可以.问你对于所有的点i,输出i被移除 ...
- 实验三 敏捷开发与XP实践实验报告
实验三 敏捷开发与XP实践实验报告 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vi ...
- datetimepicker只显示日期,不显示时分秒
HTML代码<div class="input-group date form_datetime form-date" data-link-field="dtp_i ...
- Unity 加密解密
解密无非就为了 修改游戏功能数据.提取游戏资源.加入自己想加的广告...加密就是保护游戏不被恶意修改,经常看到有人说:"加什么密,你以为自己写的代码很NB?见不得人?"我只想说,加 ...
- iOS中 三种随机数方法详解
ios 有如下三种随机数方法: //第一种 srand((unsigned)time(0)); //不加这句每次产生的随机数不变 int i = rand() % 5; //第二种 srandom(t ...