leetcode 2 addtwosum
来源:互联网 发布:淘宝小棉袄衣服 编辑:程序博客网 时间:2024/06/06 20:47
题意:2个链表内容相加,链表数据均为个位数,如果相加超过10,则取余,同时下一节点值进1
此题就是要懂得处理特殊情况,如下:
1. 刚输入的l1、l2头节点有可能是空的
2.l1和l2的长度可能不相等
3.l1比l2长,同时l1的后半段一直是9,即后方会不断进1
4. l1和l2即使都遍历结束了,但因为最后节点相加大于10,故应该再新增加一个节点!
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) { int sum,add_num=0,num1,num2; struct ListNode *p1,*p2,*l3,*p3; l3=(struct ListNode *)malloc(sizeof(struct ListNode)); p3=l3; p1=l1;p2=l2; if(l1==NULL) //这段预防刚输入的l1、l2就是空的 return l2; else if(l2==NULL) return l1; while(1) { //如果为空,则置0,否则置其val,处理有一段链表到头了,另一段没到头 if(p1==NULL) num1=0; else num1=p1->val; if(p2==NULL) num2=0; else num2=p2->val; //相加,取余处理,增值处理 sum=num1+num2+add_num; p3->val=sum%10; add_num=sum/10; //如果已经是空了,就不继续向下,一样用于处理某链表到头情况 if(p1!=NULL) p1=p1->next; if(p2!=NULL) p2=p2->next; //当二者一起到头时,说明要结束计算了 if(p1==NULL&&p2==NULL) { //查看增值是否为1,若是,还需要在尾端加一个节点,值为1 if(add_num==1) { p3->next=(struct ListNode *)malloc(sizeof(struct ListNode)); p3->next->val=add_num; p3->next->next=NULL; //记住,尾节点的next必须要初始化为NULL } else p3->next=NULL; return l3; } //建立新的下一个节点,next记得先设为null p3->next=(struct ListNode *)malloc(sizeof(struct ListNode)); p3=p3->next; p3->next=NULL; }}
0 0
- leetcode 2 addtwosum
- LeetCode(2)
- Leetcode 2
- leetcode 2
- leetcode 2
- LeetCode(2)
- Leetcode 2
- LeetCode(2)
- Leetcode 2
- leetcode-2
- LeetCode 2
- leetcode(2)
- LeetCode(2)
- leetcode 2
- leetcode(2)
- Leetcode #2
- LeetCode-2
- [Leetcode] 2 Sum
- python
- 通过mysqlnow()函数校正本地(windows)时间与服务器(linux)时间
- Android中Service(服务)详解
- swift学习之函数
- GridViewAdapte图片上传
- leetcode 2 addtwosum
- JMS入门(六)--DeliveryMode
- RouterOS 反向代理
- 聊一聊PV和并发、以及计算web服务器的数量的方法
- Generate Parentheses
- PHP之比较运算符
- 使用 Sencha Test 持续交付
- jeeplus快速开发框架
- android lk解读 (6)--panel的点亮