Leetcode 第二题,两数链表相加
2016-04-25 23:10
295 查看
问题:
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
即,两个整数链表,相加,返回一个整数链表,注意进位。
解法:其实这个题名并没有捷径和太多技巧,主要是看是否理解链表的结构。
如果学过C/C++的指针的话,理解起来会更加容易。
结束:难度不是很大,会一点C/C++,比起双向链表什么的,有点无聊。。。
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
即,两个整数链表,相加,返回一个整数链表,注意进位。
解法:其实这个题名并没有捷径和太多技巧,主要是看是否理解链表的结构。
如果学过C/C++的指针的话,理解起来会更加容易。
/** * Created by Atlantis on 16/4/25. *ListNode.java * Definition for singly-linked list. */ public class ListNode { int val; ListNode next; ListNode(int x){ val = x; } } /** *Solution.java * Created by Atlantis on 16/4/25. */ public class Solution { public static ListNode addTwoNumbers(ListNode l1, ListNode l2) { if(null == l1 && null == l2){ return null; } int forward = 0; ListNode ret = new ListNode(0); ListNode head = ret; while (null != l1 && null != l2){ int sum = l1.val + l2.val +forward; forward = sum/10; l1 = l1.next; l2 = l2.next; ret.next = new ListNode(sum%10); ret = ret.next; } while (null != l1){ int sum = l1.val+forward; ret.next = new ListNode(sum%10); forward = sum/10; ret = ret.next; l1 = l1.next; } while (null != l2){ int sum = l2.val+forward; ret.next = new ListNode(sum%10); forward = sum/10; ret = ret.next; l2 = l2.next; } if(forward != 0 ){ ret.next = new ListNode(forward); } return head.next; } public static void main(String[] args){ ListNode l1 = new ListNode(6); l1.next = new ListNode(4); l1.next.next = new ListNode(3); ListNode l2 = new ListNode(5); l2.next = new ListNode(6); l2.next.next = new ListNode(4); ListNode ret =addTwoNumbers(l1,l2); if(null != ret) { System.out.print(ret.val); } while (ret.next != null){ System.out.print("->"); System.out.print(ret.next.val); ret = ret.next; } } }
结束:难度不是很大,会一点C/C++,比起双向链表什么的,有点无聊。。。
链表这个东西,果然还是指针理解起来比较容易和直观。
相关文章推荐
- 学习笔记之对EL表达式的一些总结:
- chrome面板之source
- 删除指定目录下的文件和文件夹
- C++类虚函数内存分布(这个 你必须懂)
- Java内存泄漏分析与解决方案
- 易语言学习第二十六课-----DLL和调用
- JAVA HashMap 实现原理
- complex form
- Libev和Libuv的区别
- java版斐波那契
- 整数划分问题
- C++实验4-【项目3:乘法口诀表】
- 工厂模式的应用
- hdu 2099 - 整除的尾数
- 新手一枚,写了个大数相加的C程序
- Combining Sketch and Tone for Pencil Drawing Production的优化过程
- c++实验4,计算偶数
- C++上机实验4-求1000以内所有偶数的和
- PHP5 String 函数(更新中)
- 利用python,基于SVM实现文本分类