Add Two Numbers

原创 2015年07月10日 10:25:33
Add Two Numbers 

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

首先十进制加法应该注意进位的处理,因为两个链表长度有可能不等长!

因此这道题还要考虑边界和异常条件的处理。

public class Solution {
	public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
		if (l1 == null && l2 == null)
			return null;
		/*
		 * 在java中,基本类型变量是传值的副本,对象型变量是传引用的副本,一次ret,ll操作的是同一内存,
		 * 	ll用来指示链表的头结点地址
		 */
		ListNode ll =null;
		ListNode ret=ll;
		int carry = 0;
		int l1_val = 0;
		int l2_val = 0;
		while (l1 != null || l2 != null ) {
			l1_val = (null == l1) ? 0 : l1.val;
			l2_val = (null == l2) ? 0 : l2.val;
			int add = l1_val + l2_val + carry;
			ListNode n=new ListNode(add % 10);
			if(ll==null){
				ll=n;
				ret=n;
			}else{
				ret.next=n;
				ret=n;
			}
			carry = add/10;
			if (null != l1)
				l1 = l1.next;
			if (null != l2)
				l2 = l2.next;
		}
		if (l1 == null && l2 == null && carry!= 0){
			ListNode n = new ListNode(carry);
            ret.next = n;
		}
		return ll;
	}
	public static void main(String[] args) {
        ListNode l1 = new ListNode(2);
        ListNode x2 = new ListNode(4);
        ListNode x3 = new ListNode(3);
        l1.next = x2;
        x2.next = x3;
         
        ListNode l2 = new ListNode(5);
        ListNode y2 = new ListNode(6);
        ListNode y3 = new ListNode(4);
        l2.next = y2;
        y2.next = y3;
         
        ListNode ret = addTwoNumbers(l1, l2);
        while(ret!=null&&ret.next!=null){
        	System.out.print(ret.val+"->");
        	ret=ret.next;
        }
        if(ret!=null)
        	System.out.print(ret.val);
    }


【python】【leetcode】【算法题目2—Add Two Numbers】

【python】【leetcode】【算法题目2—Add Two Numbers】 题目原文: You are given two linked lists representing two non-...
  • u014615155
  • u014615155
  • 2016年11月21日 12:05
  • 1792

Add Two Numbers问题及解法

问题描述: You are given two non-empty linked lists representing two non-negative integers. The digits...
  • u011809767
  • u011809767
  • 2017年02月16日 09:17
  • 480

第十五周(Add Two Numbers)

第十四周(subsets,NP问题) 目录: 本周完成题目 主要过程思路 相关代码 一、本周完成题目 本周共完成2道题目,2道Medium。主要是关于子集的两个问题。 具...
  • qq_24486635
  • qq_24486635
  • 2017年05月30日 15:01
  • 92

算法练习:Add Two Numbers

https://leetcode.com/problems/add-two-numbers/?tab=Description
  • zhangf21
  • zhangf21
  • 2017年02月24日 11:18
  • 151

freemarker写select组件报错总结(五)

1、错误描述 六月 26, 2014 10:44:49 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc...
  • you23hai45
  • you23hai45
  • 2014年06月26日 22:47
  • 2707

2. Add Two Numbers官方通过版本(8.46%)

public class AddTwoNumbers { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { Lis...
  • ithouse
  • ithouse
  • 2016年01月05日 15:58
  • 233

Add Two Numbers(基于链表的两数相加)

You are given two linked lists representing two non-negative numbers. The digits are stored in rever...
  • ajiangfan
  • ajiangfan
  • 2016年12月03日 14:26
  • 313

(LeetCode)算法题目——Add Two Numbers

Add Two Numbers
  • lh470342237
  • lh470342237
  • 2017年07月31日 22:47
  • 55

第一天 Add Two Numbers(链表加法)

这是leetcode第二题,对链表的知识基础有一定要求。暂时自己写不出来,先完全解析别人的代码。 1. 先排除极端情况,简化后续 if(l1 == NULL && l2) return l2; ...
  • Taylor_ChaosDreamer
  • Taylor_ChaosDreamer
  • 2016年07月19日 20:59
  • 205

每日算法之四:Add Two Numbers

题目要求如下:
  • yapian8
  • yapian8
  • 2014年04月13日 21:18
  • 571
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Add Two Numbers
举报原因:
原因补充:

(最多只允许输入30个字)