lintcode(221)链表求和 II
来源:互联网 发布:移动平均算法 编辑:程序博客网 时间:2024/06/05 15:57
Description:
假定用一个链表表示两个数,其中每个节点仅包含一个数字。假设这两个数的数字顺序排列,请设计一种方法将两个数相加,并将其结果表现为链表的形式。
Explanation:
给出 6->1->7 +2->9->5。即,617 + 295。
返回 9->1->2。即,912 。
Solution:
利用栈的先进后出,记录两个链表的节点值。然后计算对应位置的两个数字之和,如果有进位,赋值给flag并带入下一个计算。
/** * 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 addLists2(ListNode l1, ListNode l2) { // write your code here Stack<Integer> temp1 = reverseNode(l1); Stack<Integer> temp2 = reverseNode(l2); ListNode point = new ListNode(0); int flag = 0; while((!temp1.isEmpty()) && (!temp2.isEmpty())){ int value = temp1.pop() + temp2.pop() + flag; flag = value/10; value = value%10; ListNode cur = new ListNode(value); cur.next = point.next; point.next = cur; } while(!temp1.isEmpty()){ int value = temp1.pop() + flag; flag = value/10; value = value%10; ListNode cur = new ListNode(value); cur.next = point.next; point.next = cur; } while(!temp2.isEmpty()){ int value = temp2.pop() + flag; flag = value/10; value = value%10; ListNode cur = new ListNode(value); cur.next = point.next; point.next = cur; } if(flag == 1){ ListNode cur = new ListNode(1); cur.next = point.next; point.next = cur; } return point.next; } public Stack<Integer> reverseNode(ListNode temp){ Stack<Integer> record = new Stack<Integer>(); while(temp != null){ record.push(temp.val); temp = temp.next; } return record; }}
阅读全文
0 0
- lintcode(221)链表求和 II
- 链表求和 II-LintCode
- LintCode-[中等] 221. 链表求和 II
- LintCode链表求和221
- LintCode 链表求和
- lintcode ----链表求和
- LintCode 链表求和
- 链表求和-LintCode
- lintcode--链表求和
- LintCode:链表求和
- lintcode-链表求和
- 链表求和-LintCode
- lintcode 链表求和
- 链表求和(LintCode)
- LintCode:区间求和 II
- 区间求和 II -LintCode
- 链表求和(LintCode)
- LintCode-简单-链表求和
- rnn学习,keras rnn实践 文本生成
- Java 向上转型和向下转型
- 【Git & GitHub】VS2015 上配置使用Git
- opengles(二)画个三角型
- 希尔排序
- lintcode(221)链表求和 II
- C++/MFC-CString,String,CHAR*互相转换
- Javascript笔记(3)
- 二叉树面试算法:空间复杂度为 O(1)的Morris遍历法
- JavaWeb学习总结(五十)——文件上传和下载
- js原生学习-初级-练习07
- Java中的内置锁和显式锁
- mybatis一对多查询的注意事项
- (14)spring boot中@SpringBootApplication注解