链表求和
来源:互联网 发布:短信验证码平台源码 编辑:程序博客网 时间:2024/05/19 17:08
题目
你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。
样例
给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null
解题
通过新建结点求和
注意进位情况,特别是最后可能还要进位的
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { /** * @param l1: the first list * @param l2: the second list * @return: the sum list of l1 and l2 */ public ListNode addLists(ListNode l1, ListNode l2) { // write your code here ListNode p1 = l1; ListNode p2 = l2; if(p1 == null) return p2; if(p2 == null) return p1; ListNode head = new ListNode(0); ListNode p3 = head; int flag = 0; while(p1!=null && p2!=null){ int sum = flag + p1.val + p2.val; flag = sum/10; sum = sum%10; ListNode s = new ListNode(sum); p3.next = s; p3 = p3.next; p1 = p1.next; p2 = p2.next; } p1 = p1==null?p2:p1; while(p1!=null ){ int sum = flag + p1.val; flag = sum/10; sum = sum%10; ListNode s= new ListNode(sum); p3.next = s; p3 = p3.next; p1 = p1.next; } if(flag == 1){ ListNode s= new ListNode(1); p3.next = s; p3 = p3.next; } return head.next; }}
通过修改其中一个结点的值方法
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { /** * @param l1: the first list * @param l2: the second list * @return: the sum list of l1 and l2 */ public ListNode addLists(ListNode l1, ListNode l2) { // write your code here ListNode p1 = l1; ListNode p2 = l2; if(p1 == null) return p2; if(p2 == null) return p1; ListNode head = new ListNode(0); ListNode p3 = head; int flag = 0; while(p1!=null && p2!=null){ int sum = flag + p1.val + p2.val; flag = sum/10; sum = sum%10; p1.val = sum; p3.next = p1; p3 = p3.next; p1 = p1.next; p2 = p2.next; } p1 = p1==null?p2:p1; while(p1!=null ){ int sum = flag + p1.val; flag = sum/10; sum = sum%10; p1.val = sum; p3.next = p1; p3 = p3.next; p1 = p1.next; } if(flag == 1){ ListNode s= new ListNode(1); p3.next = s; p3 = p3.next; } return head.next; }}
0 0
- 链表求和 & 二进制求和
- 链表多项式求和
- 链表求和
- LintCode 链表求和
- 链表求和
- lintcode ----链表求和
- 链表求和
- 链表求和
- 链表求和
- 链表求和
- 链表求和
- 链表求和
- 链表求和
- 链表求和
- LintCode 链表求和
- 链表求和-LintCode
- 链表求和
- 链表求和
- 《JAVA中的集合框架》
- Android 系统服务一览表
- 优化
- linux ——make
- Javascript类型转换的规则
- 链表求和
- 函数式编程—初识Lambda表达式
- 费马小定理
- 通过Python爬虫爬取知乎某个问题下的图片
- java面试宝典学习笔记(二)
- 数据库查询代价估算优化的深度介绍
- 两个线程运行++a
- xml解析02
- JSP