LeetCode OJ : 2 Add Two Numbers
来源:互联网 发布:阿里云 地区选择 编辑:程序博客网 时间:2024/06/15 20:49
Add Two Numbers
Total Accepted: 103820 Total Submissions: 487934 Difficulty: Medium
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
/** * 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) { ListNode *ListSum = NULL, *pNode = NULL, *tail = NULL; ListNode *pl1 = l1, *pl2 = l2; int sum, cnt = 0; while(pl1 != NULL || pl2 != NULL){ if(pl1 == NULL) { //此时是因为链表pl2比较长 sum = cnt + pl2->val; } else if(pl2 == NULL){ //此时是因为链表pl1比较长 sum = cnt + pl1->val; } else if(pl1 != NULL && pl2 != NULL){ sum = cnt + pl1->val + pl2->val; } cnt = 0; if(sum >= 10){ cnt = 1; sum -= 10; } pNode = new struct ListNode(sum); if(ListSum == NULL){ ListSum = pNode; tail = pNode; } else{ tail->next = pNode; tail = pNode; } if(pl1 != NULL)pl1 = pl1->next; if(pl2 != NULL)pl2 = pl2->next; } if(cnt == 1){ //考虑到最高位的两位进位 sum = cnt; pNode = new struct ListNode(sum); if(ListSum == NULL){ ListSum = pNode; tail = pNode; } else{ tail->next = pNode; tail = pNode; } } return ListSum; }};
如果将结果存放在其中一个比较长的链表上面,效率应该会更高一些;
写了一半,懒得写了,大概思路就是:首先获得两个链表的长度,通过比较两个链表的长度,来分情况;
如果最高位还是有进位的话,就动态分配一个结点来保存进位1;
改天有时间再试试;
0 0
- LeetCode OJ #2 Add Two Numbers
- LeetCode OJ : 2 Add Two Numbers
- Leetcode OJ 2 Add Two Numbers [Medium]
- LeetCode OJ:Add Two Numbers
- LeetCode OJ - Add Two Numbers
- LeetCode OJ Add Two Numbers
- LeetCode OJ - Add two Numbers
- LeetCode OJ ----Add Two Numbers
- LeetCode OJ:Add Two Numbers
- Leetcode OJ:Add Two Numbers
- LeetCode OJ 第2题 Add Two Numbers 解题报告
- [LeetCode OJ][002]Add Two Numbers
- 【LeetCode OJ 002】Add Two Numbers
- LeetCode OJ 02 Add Two Numbers
- <LeetCode OJ> 2. Add Two Numbers
- LeetCode OJ 2.Add Two Numbers
- LeetCode OJ 2. Add Two Numbers
- LeetCode OJ(2.Add Two Numbers)
- zzulioj--1787--生活危机(vector+dfs 好题)
- 没有躲过的坑--new一个指针数组、以及创建动态二维数组
- PHP 接口
- 程序调用ShellExecuteEx打开其他程序(兼容UAC获取管理员权限)
- Asset目录与res目录
- LeetCode OJ : 2 Add Two Numbers
- UserDefault
- 深入理解gps
- .net mvc 获取url中controller和action
- ACM的算法(觉得很好,有层次感)
- 自定义可拖拽的容器LinearLayout2
- c#.net smtp 发送邮件
- AndroidManifest.xml文件解析
- SAE 配置预装 django1.8.3中出现的问题