LeetCode Add Two Numbers两个链表数值相加
来源:互联网 发布:华为云计算部门结构 编辑:程序博客网 时间:2024/05/18 19:46
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 -> 8
相当于无限加了,就是用了链表来存储数据。
本题就是考对链表的操作和模拟加法。
第一种方法:
这个跟合并两个有序链表成一个有序链表的程序结构是一样的。
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {int carry = 0;int sum = 0;ListNode *sumList = new ListNode(-1);ListNode *cur = sumList;int l1val, l2val;while (l1 && l2){l1val = l1->val;l2val = l2->val;l1 = l1->next;l2 = l2->next;sum = carry + l1val + l2val;carry = sum/10;sum %= 10;cur->next = new ListNode(sum);cur = cur->next;}while (l1){l1val = l1->val;l1 = l1->next;sum = carry + l1val;carry = sum/10;sum %= 10;cur->next = new ListNode(sum);cur = cur->next;}while (l2){l1val = l2->val;l2 = l2->next;sum = carry + l1val;carry = sum/10;sum %= 10;cur->next = new ListNode(sum);cur = cur->next;}if (carry != 0){cur->next = new ListNode(carry);}ListNode *t = sumList->next;delete sumList;return t;}
这样也许简洁一点,逻辑是差不多的,就是处理数据有点不一样。
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {ListNode *sumList = new ListNode(-1);ListNode *cur = sumList;int carry = 0;while (l1 != nullptr || l2 != nullptr || carry != 0) {int l1val = l1 == nullptr ? 0 : l1->val;int l2val = l2 == nullptr ? 0 : l2->val;int sum = l1val + l2val + carry;carry = sum / 10;sum %= 10;cur->next = new ListNode(sum);cur = cur->next;l1 = l1 == nullptr ? nullptr : l1->next;l2 = l2 == nullptr ? nullptr : l2->next;}ListNode *t = sumList->next;delete sumList;return t;}
- LeetCode Add Two Numbers两个链表数值相加
- LeetCode | Add Two Numbers(两个链表相加)
- (leetcode)2. 两个链表相加Add Two Numbers--Java
- Add Two Numbers Leetcode 链表相加
- Leetcode Add two numbers链表相加
- 【LeetCode】链表相加 Add Two Numbers
- leetcode Add Two Numbers 两个数相加
- Add Two Numbers 把两个以链表形式表示的数相加 @LeetCode
- leetcode 5. 两个链表逐个元素相加 Add Two Numbers
- [Leetcode #2]Add Two Numbers 链表存储的两个正数相加
- LeetCode 2. Add Two Numbers -- 两个链表按序从头到尾相加,记录进位
- Add Two Numbers 两个链表相加 python
- [Leetcode]Add Two Numbers 链表实现大数字相加
- LeetCode-2. Add Two Numbers(链表实现数字相加)
- 【LeetCode】2.Add Two Numbers两个单链表相加
- Add Two Numbers 链表相加
- Add Two Numbers 链表相加
- Leetcode Add Two Numbers 两个链表表示的数相加
- 如何清理控制文件中的备份信息
- Linux 线程同步与互斥
- Java 之 注释介绍
- touch 命令
- ubuntu下mysql的启动/停止/重启,以及远程连接设置
- LeetCode Add Two Numbers两个链表数值相加
- C# 将图片导出Excel(包括 创建Excel 、文件压缩、递归删除文件及文件夹)
- WCF 创建简单的CF程序VS2008
- C#窗体控件简介ListBox
- 常用排序算法
- booststrap中的navbar
- cygwin下apt-cyg安装使用
- id 和 instancetype
- nodejs入门