2.Add Two Numbers(2)
来源:互联网 发布:淘宝01店手机网可靠吗 编辑:程序博客网 时间:2024/06/11 17:00
后来又重新整理了,与(1)中相比,(1)中只有两个循环,但是(2)中有三个三循环,因此时间也从22ms变了28ms.
但是(2)相比(1)节省了空间,特别是在这个两个数的位数很大,且两个数的位数很近的时候。
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) { struct ListNode* sumNode=NULL; //Use struct to define the variable struct ListNode* head=NULL; struct ListNode* one=l1; struct ListNode* two=l2; struct ListNode* list=NULL; struct ListNode* another=NULL; if(l1==NULL && l2==NULL) { return two; } else if(l1==NULL) { return l2; } else if(l2==NULL) { return l1; } else //two lists are not NULL { //Find which list is longer //set list to the shorter list while(one!=NULL && two!=NULL) { one=one->next; two=two->next; } if(one!=NULL) { list=l2; //shouldn't set to two another=l1; } else { list=l1; another=l2; } struct ListNode* pre; int num=0; while(list!=NULL) { if(head==NULL) { head=another; } int sum=list->val+another->val+num; num=0; if(sum<10) { another->val=sum; } else { int remain=sum%10; num=sum/10; another->val=remain; } pre=another; list=list->next; another=another->next; } while(num!=0 && another!=NULL) { int sum=another->val+num; num=0; if(sum<10) { another->val=sum; } else { int remain=sum%10; num=sum/10; another->val=remain; } pre=another; another=another->next; } if(num!=0 && another==NULL) { sumNode=(struct ListNode*)malloc(sizeof(struct ListNode*)); sumNode->val=num; sumNode->next=NULL; pre->next=sumNode; } } return head;}
0 0
- 2.Add Two Numbers(2)
- 2.Add Two Numbers
- 2.Add Two Numbers
- 2.Add Two Numbers
- 2.Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2.Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2.Add Two Numbers
- 2. Add Two Numbers
- android app中使用application
- 微信公众号在打开的网站中直接进入苹果应用商店
- 区块链钱包怎么开发
- ios开发:push与present的区别
- mysql workbench中PK,NN,UQ,BIN,UN,ZF,AI字段类型标识说明
- 2.Add Two Numbers(2)
- [LeetCode-Java]43. Multiply Strings
- 什么是线程安全?如何保证线程安全?
- Android studio_迁移Eclipse项目到Android studio
- Android中的微信、支付宝支付功能的简单实现
- PS入门
- DNS 解析过程
- HDU 5927 Auxiliary Set DFS好题
- PHP学习笔记十四之异常(进阶篇)