算法基础
2016-05-03 11:06
281 查看
链表求和
题目:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。
样例:
给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null
分析:
相同位置相加,如果不足补0,如果加到最后,进位不为0,还需要另外添加一个节点。
答案:
/** * 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 r = null, pre = null, mid; // 进位值 int temp = 0; // 个位数 int num = 0; while (true) { if (null == l1 && null == l2) { break; } num = (l1.val + l2.val + temp) % 10; if (null == pre) { pre = new ListNode(num); r = pre; } else { mid = new ListNode(num); pre.next = mid; //r = pre; pre = pre.next; } temp = (l1.val + l2.val + temp) / 10; if (null == l1.next && null == l2.next) { break; } l1 = l1.next == null ? new ListNode(0) : l1.next; l2 = l2.next == null ? new ListNode(0) : l2.next; } if (temp > 0) { pre.next = new ListNode(temp); } return r; } }
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析