LeetCode_2_AddTwoNumbers(Java Code)
来源:互联网 发布:21lic单片机项目外包网 编辑:程序博客网 时间:2024/06/05 23:44
题目:使用两个链表来表示非负整数,每个节点保存单个数字,位是倒序排列的,即个位是链表的第一个元素, 百位是链表的第二个元素, 以此类推,例如:链表1是3->4->5表示的数值是543,将两个链表所表示的数相加,使用链表存储结果并返回。LeetCode原题
/** * @author ChrisWang * @Date 2016年2月20日 上午10:54:24 * @Description 两个链表表示非负整数,每个节点保存单个数字,位是倒序排列的(即个位是链表的第一个元素, * 百位是链表的第二个元素, 以此类推),将其相加并返回一个链表 * @Example:输入: (2 -> 4 -> 3) + (5 -> 6 -> 4) 即表示数字342+465 * 输出: 7 -> 0 -> 8 该链表表示上面的两个数之和:807 * @Thinking: */public class AddTwoNumbers { // 测试方法 public static void main(String[] args) { ListNode ln1_ele1 = new ListNode(8);// 第一个链表的第一个元素 ListNode ln1_ele2 = new ListNode(3); ln1_ele1.next = ln1_ele2; ListNode ln1_ele3 = new ListNode(1); ln1_ele2.next = ln1_ele3; ListNode ln2_ele1 = new ListNode(4);// 第二个链表的第一个数据 ListNode ln2_ele2 = new ListNode(7); ln2_ele1.next = ln2_ele2; ListNode result = addTwoNumbers(ln1_ele1, ln2_ele1); while(result!=null) { if(result.next==null) { System.out.println(result.val); } else { System.out.print(result.val+"->"); } result = result.next; } } /** * 核心方法 * @param l1 第一个链表 * @param l2 第二个链表 * @return 新链表 */ public static ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode result_head = new ListNode(); // 定义一个空链表,存放结果 ListNode listNode1 = l1; ListNode listNode2 = l2; ListNode listNode3 = result_head; int carry = 0; // 两个链表都没有遍历完 while(listNode1!=null || listNode2!=null) { if(listNode1!=null) { carry += listNode1.val; // 取出当前位上的数值 listNode1 = listNode1.next; // 移动到下一位 } if(listNode2!=null) { carry += listNode2.val; listNode2 = listNode2.next; } listNode3.next = new ListNode(carry%10);// 取得同一数位上的两个数字之和的个位数 listNode3 = listNode3.next; // 指向下一位用来存放下一个元素 carry /= 10;// 如果有进位,则carry=1 } // 循环结束,但要确认最后一次有没有进位 if(carry==1) { listNode3.next = new ListNode(1); } return result_head.next; }}/** * 单链表类 * Definition for singly-linked list. */class ListNode { int val; // 链表上的值 ListNode next; // 链表上指向下一位的指针 ListNode() { } ListNode(int x) { val = x; }}
0 0
- LeetCode_2_AddTwoNumbers(Java Code)
- gray-code Java code
- Java code
- java code
- code.java
- code.java
- java code
- Java Code To Byte Code
- Java Code To Byte Code
- Code Review for Java code
- Java-XPath(code)
- java code 查询
- Protect your java code
- DES JAVA source code
- dom4j(Java code)
- java exception code
- 正则表达式-Java code
- java code example site
- javaScript小结(上)
- textview 滚动显示.txt
- iOS UIView及其子控件的常用设置
- VC6 ”add files to project“功能失效的解决方案
- 1020. Tree Traversals (25)
- LeetCode_2_AddTwoNumbers(Java Code)
- android app 读取本地.db文件,实现不变数据本地化(附小demo)
- Angular2学习笔记.3、通过模板调用Controller事件实现用户输入和显示,UserInput
- python 解析xml包使用方法总结
- Cocos2d-x 3.x事件机制源码分析
- Java设计模式 单例模式
- 多线程并发C/S基本通信模型及实现
- jQuery基础1
- 所需即所获:像 IDE 一样使用 vim