博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Add Two Numbers
阅读量:6580 次
发布时间:2019-06-24

本文共 4169 字,大约阅读时间需要 13 分钟。

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

注意:最后一位如果有进位,需要新创建一个结点来存放。

C++代码实现:

#include
#include
using namespace std;//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 *p=l1; ListNode *pre=l1; ListNode *q=l2; int carry=0; while(p&&q) { if(p->val+q->val+carry>9) { p->val=(p->val+q->val+carry)%10; carry=1; } else { p->val+=q->val+carry; carry=0; } pre=p; p=p->next; q=q->next; } if(q) pre->next=q; while(q) { if(q->val+carry>9) { q->val=(q->val+carry)%10; carry=1; } else { q->val+=carry; carry=0; break; } pre=q; q=q->next; } while(p) { if(p->val+carry>9) { p->val=(p->val+carry)%10; carry=1; } else { p->val+=carry; carry=0; break; } pre=p; p=p->next; } if(carry) { p=new ListNode(1); pre->next=p; } return l1; } void createList(ListNode *&head,int *arr) { ListNode *p=NULL; int i=0; for(i=0; i<5; i++) { if(head==NULL) { head=new ListNode(arr[i]); if(head==NULL) return; } else { p=new ListNode(arr[i]); p->next=head; head=p; } } }};int main(){ Solution s; ListNode *L1=NULL; ListNode *L2=NULL; ListNode *L=NULL; int arr1[10]= {
1,9,7,5,3}; int arr2[10]= {
0,8,6,4,2}; s.createList(L1,arr1); s.createList(L2,arr2); L=s.addTwoNumbers(L1,L2); while(L) { cout<
val<<" "; L=L->next; }}

运行结果:

#include
#include
using namespace std;//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) { int carry=0; ListNode *pre=l1; ListNode *p=l1; ListNode *q=l2; while(p&&q) { p->val+=q->val+carry; cout<
val<
val>9) { carry=1; p->val=p->val%10; } else carry=0; pre=p; p=p->next; q=q->next; } if(q) { pre->next=q; p=q; } while(p) { p->val=p->val+carry; if(p->val>9) { p->val=p->val%10; carry=1; } else { carry=0; break; } pre=p; p=p->next; } if(carry==1) pre->next=new ListNode(1); return l1; } void createList(ListNode *&L,int arr[],int n) { int i; for(i=0; i
next=L; L=tmp; } } }};int main(){ Solution s; ListNode *L1=NULL; ListNode *L2=NULL; ListNode *L=NULL; int arr1[10]= {8,9}; int arr2[10]= {1}; s.createList(L1,arr1,2); s.createList(L2,arr2,1); L=s.addTwoNumbers(L1,L2); while(L) { cout<
val<<" "; L=L->next; }}

  

转载地址:http://tinno.baihongyu.com/

你可能感兴趣的文章
textarea文域高度自适应
查看>>
go语言renderer包代码分析
查看>>
【Scala谜题】成员声明的位置
查看>>
git最最最最...常用命令
查看>>
复杂recyclerView封装库
查看>>
使用Redis构建文章投票网站(Java)
查看>>
见微知著 —— Redis 字符串内部结构源码分析
查看>>
Command './js-ant' failed to execute
查看>>
阿里云NFS NAS数据保护实战
查看>>
Spring cloud配置客户端
查看>>
产品研发项目管理软件哪个好?
查看>>
【阿里云北京峰会】一图看懂机器学习PAI如何帮助企业应用智能化升级
查看>>
ansible playbook使用总结
查看>>
Android API中文文档(111) —— MailTo
查看>>
Linux 中如何卸载已安装的软件
查看>>
thinkphp 3.2 增加每页显示条数
查看>>
oracle日常简单数据备份与还原
查看>>
我的友情链接
查看>>
黑马程序员__反射总结
查看>>
Scala学习笔记(5)-类和方法
查看>>