add two numbers
来源:互联网 发布:怎么禁止程序访问网络 编辑:程序博客网 时间:2024/06/02 23:20
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
这是考察单链表的相关操作,主要就是插入与边界的检测问题。我的想法是:
1.规定用 l1 来返回这个结果;
2.因为要遍历 l1与l2 的所有结点,所以定义两个遍历指针,分别为 p1, p2,同时,由于存在一个链长一个短的情况,为了方便程序的编写,添加一个前置指针,用于添加新的结点或者连接 l1 与 l2
3.p1与 p2 指向的结点有四种情况,分别是:都为null, 只有一个为null, 都非null.于是分四种情况。程序如下:
/** * 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) { //把两条链合成一条l1,返回 ListNode *p1, *p2, *pre; int sum = 0;int add = 0; p1 = l1; p2 = l2; pre = p1;if (!l1)return l2;if (!l2)return l1; while ( p1 && p2 ){sum = p1->val + p2->val + add;p1->val = sum % 10;add = sum / 10;pre = p1;p1 = p1->next;p2 = p2->next;}if ( !p1 && !p2 ){if (add){ListNode* node = new ListNode(1);pre->next = node;}}else if (p1)//p1 不为空{while (p1){sum = p1->val + add;p1->val = sum % 10;add = sum / 10;pre = p1;p1 = p1->next;}if (add){ListNode* node = new ListNode(1);pre->next = node;}}else//p2不为空{pre->next = p2;while (p2){sum = p2->val + add;p2->val = sum % 10;add = sum / 10;pre = p2;p2 = p2->next;}if (add){ListNode* node = new ListNode(1);pre->next = node;}}return l1; }};
0 0
- Add two numbers & Add binary
- LeetCode: Add Two Numbers
- Add Two Numbers
- LeetCode: Add Two Numbers
- [LeetCode]Add Two Numbers
- LeetCode Add Two Numbers
- Leetcode: Add Two Numbers
- Add Two Numbers
- LeetCode : Add Two Numbers
- LeetCode Add Two Numbers
- [LeetCode] Add Two Numbers
- LeetCode4: Add Two Numbers
- Leetcode : Add Two Numbers
- Add Two Numbers
- 【leetcode】Add Two Numbers
- add two numbers
- Add Two Numbers
- Add Two Numbers
- android常用的命令
- Android listview addHeaderView和addFooterView详解
- C++语言学习之STL 的组成
- 实现当点击一张图片的时候,图片会放大,再点击图片的背景的时候,图片会缩放回去
- Hive实战之日志分析
- add two numbers
- leetcode_Isomorphic Strings _easy
- cocos2d-x 减少游戏耗电量
- 开放Android root权限
- Libpcap 总结
- 布隆过滤器
- PU learning算法简介
- MySQL读取数据到php二维数组
- Unknown type '246 in column 3 of 5 in binary-encoded result set