Add Two Numbers
来源:互联网 发布:执行方案范文知乎 编辑:程序博客网 时间:2024/06/07 05:44
- Add Two Numbers
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 -> 8A这道题主要是考虑到输入的两个list是否为空, 长度不一致的处理,最关键的还是进位的处理。C++的代码如下:
/** * 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 *head=NULL, *curNode = NULL; if(!l1) return l2; if(!l2) return l1; int bit = 0; while(l1 && l2) { ListNode *newNode = new ListNode(l1->val + l2->val + bit); newNode->next = NULL; l1 = l1->next; l2 = l2->next; if(newNode->val >= 10) { newNode->val -= 10; bit = 1; } else bit = 0; if(!head) { head = newNode; curNode = head; } else { curNode ->next = newNode; curNode = curNode ->next; } } while(l1) { l1->val += bit; if(l1->val>=10) { l1->val -= 10; bit = 1; } else { bit = 0; } ListNode *newNode = new ListNode(l1->val); newNode->next = NULL; curNode->next = newNode; curNode=curNode->next; l1 = l1->next; } while(l2) { l2->val += bit; if(l2->val >=10) { l2->val -= 10; bit = 1; } else { bit = 0; } ListNode *newNode = new ListNode(l2->val); newNode->next = NULL; curNode->next = newNode; curNode=curNode->next; l2 = l2->next; } if(bit) { ListNode *tailNode = new ListNode(1); curNode->next = tailNode; curNode = curNode->next; } return head; }};
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
- [LeetCode 62]Unique Paths
- A Bug's Life-HDU-1829
- Linux Shell 文件重定向
- 动态代理(Proxy)
- 可执行文件(ELF)格式的理解
- Add Two Numbers
- 黑马程序员_日记5_Java多态
- 每天一个面向对象陷阱,一个算法,一个小看法
- 可执行程序的组成
- 利用WebSphere Edge Server构建冷轧系统负载均衡
- UVa 806 - Spatial Structures(DFS)
- Delphi IDHTTP用法详解
- OpenCL-- 统计给定单词在文本中出现次数
- C语言 编写程序数一下1到100的所有整数中出现多少次数字9