LeetCode java实现Add Two Numbers
2015-07-21 14:11
381 查看
题目地址:https://leetcode.com/problems/add-two-numbers/
题目大意就是说给定了你两个数,但是这两个数是倒序存在两个链表里的,例如说342 表现为2->4->3的链表,465表现为5->6->4的链表。
现在让你实现这两个数相加,并且输出也是一个这样类似的链表。
这个题目看起来很简单,思路也很清晰,无法就是按位遍历,然后有进位则下一位加一,貌似实现起来非常容易。但是,在实际过程中还是遇到了一些问题,主要是因为是用java写的,比C语言稍微繁琐一些,同时进位问题需考虑首位及末尾。最后accepted的代码如下:
题目大意就是说给定了你两个数,但是这两个数是倒序存在两个链表里的,例如说342 表现为2->4->3的链表,465表现为5->6->4的链表。
现在让你实现这两个数相加,并且输出也是一个这样类似的链表。
这个题目看起来很简单,思路也很清晰,无法就是按位遍历,然后有进位则下一位加一,貌似实现起来非常容易。但是,在实际过程中还是遇到了一些问题,主要是因为是用java写的,比C语言稍微繁琐一些,同时进位问题需考虑首位及末尾。最后accepted的代码如下:
public ListNode addTwoNumbers(ListNode l1,ListNode l2){ boolean hasCarry = false; ListNode l3; if((l1.val+l2.val)>=10){ l3 = new ListNode(l1.val+l2.val-10); hasCarry = true; }else { l3 = new ListNode(l1.val+l2.val); } ListNode tmp1 = l1;//L1 point ListNode tmp2 = l2;//L2 point ListNode tmp3 = l3;//L3 point ListNode tmp = null; int value = 0; while (tmp1.next!=null||tmp2.next!=null) { if(tmp1.next!=null&&tmp2.next!=null){ tmp1 = tmp1.next; tmp2 = tmp2.next; value = tmp1.val+tmp2.val; }else if (tmp1.next!=null&&tmp2.next==null) { tmp1 = tmp1.next; value = tmp1.val+0; }else if (tmp2.next!=null&&tmp1.next==null) { tmp2 = tmp2.next; value = 0+tmp2.val; } value = hasCarry?value+1:value; if(value>=10){ tmp = new ListNode(value-10); hasCarry = true; }else { tmp = new ListNode(value); hasCarry = false; } tmp3.next = tmp; tmp3 = tmp; } if(hasCarry){ tmp3.next = new ListNode(1); } return l3; }
相关文章推荐
- Java Timer的使用(timer.schedule定时执行)
- 对JAVA的一些个人总结——面向对象
- java错误篇一
- 朴素贝叶斯分类算法-----java
- springmvc笔记
- Spring Resource
- Spring 事务管理原理探究
- spring配置和dubbo
- Java基础总结(二)
- java对象转为json数据在前台展示
- java数据类型讲解
- java 解析json格式数据
- JAVA 十六进制与字符串的转换
- java中JFrame类中函数addWindowListener(new WindowAdapter)
- MyEclipse注释模板设置
- Java JDK1.5 Condition方法
- 从Eclipse到Android Studio:Android项目如何进行迁移
- Spring MVC的单元测试
- SlidingMenu (一)在Eclipse中如何引入SlidingMenu和其Demo
- 修改eclipse启动时eclipse使用的jre