LeetCode Add Two Number

原创 2015年07月11日 10:10:54

第二天,记录自己的刷题经历,第二题

题目:      

      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


思路:

  智商实在让人捉急,看到题目半天没董是什么意思,后来才知道是一个链表代表一个数,并且该数在链表中是按照逆序的方式存储,计算这两个数之和。

   可怜 智商如此让人捉急,是不是应该赶紧转行。可怜

一把鼻涕一把泪的坎坎坷坷把这个破东西给搞定了,连基本的java中ListNode都不会用,肿么办肿么办。。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        int temp;
        int overflow = 0;
        ListNode newHead = new ListNode(0);
        ListNode l3 = newHead;
        while(l1 !=null || l2!= null){   //居然能粗心把这里的while写成for,我是猪么
            int val1=0 , val2=0;
            if(l1 != null){
                 val1 = l1.val;
                 l1 = l1.next; 
            }
            if(l2 != null){
               val2 = l2.val;
               l2 = l2.next;
            }
            temp = val1 + val2 + overflow;
            overflow = temp /10;
            l3.next = new ListNode(temp%10);
            l3 = l3.next;
            if(overflow !=0){
                l3.next =new ListNode(overflow);
            }
        }
     return  newHead.next;   //设一个头部的原因是最终要把头部指针返回去,p3一直往后挪给链表加数据
    }
}
学习人家的代码优化下我这重复性这么强的代码好么。。。

  将个个位上的和 和 进位 用一个变量来表示,减少代码的重复性 。Runtime: 452 ms

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        int temp = 0;
      //  int overflow = 0;
        ListNode newHead = new ListNode(0);
        ListNode l3 = newHead;
        while(l1 !=null || l2!= null){   //居然能粗心把这里的while写成for,我是猪么
            if(l1 != null){
                 temp += l1.val;
                 l1 = l1.next; 
            }
            if(l2 != null){
               temp += l2.val;
               l2 = l2.next;
            }
          //  temp = val1 + val2 + overflow;    //一个temp临时变量就可以搞定,没必要搞两个。
            l3.next = new ListNode(temp%10);
            temp = temp /10;
            l3 = l3.next;
            if(temp !=0){
                l3.next =new ListNode(temp);
            }
        }
     return  newHead.next;   //设一个头部的原因是最终要把头部指针返回去,p3一直往后挪给链表加数据
    }
}

伤心,刚开始连java的l1.val  l1.next都不会用,还写成l1->val   li->next;

           像这种创建下一个l3.next, 不能简单的l3 = l3.next;  需要使用 l3.next = new ListNode(val) 来创建,其中里面的val表示链表该节点的数值。


亲,你好一说  你会java,你是搞android开发的吗?大哭哭


版权声明:本文为博主原创文章,未经博主允许不得转载。

LeetCode | Add Two Numbers

题目: You are given two linked lists representing two non-negative numbers. The digits are stored in...
  • lanxu_yy
  • lanxu_yy
  • 2013年09月14日 17:06
  • 15466

[LeetCode] 002. Add Two Numbers (Medium) (C++/Java/Python)

002.Add_Two_Numbers (Medium)
  • hcbbt
  • hcbbt
  • 2015年02月27日 12:43
  • 5627

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

一、题目描述 题目原文:  You are given two linked lists representing two non-negative numbers. ...
  • u014615155
  • u014615155
  • 2016年11月21日 12:05
  • 1943

LeetCode解题报告 445. Add Two Numbers II [medium]

题目描述 You are given two linked lists representing two non-negative numbers. The most significant...
  • conniemessi
  • conniemessi
  • 2016年12月23日 00:07
  • 364

LeetCode02:Add Two Numbers Java实现

原题目: You are given two linked lists representing two non-negative numbers. The digits are stored ...
  • gg543012991
  • gg543012991
  • 2016年11月16日 22:06
  • 301

LeetCode Add Two Numbers 之JavaScript 多种解法

LeetCode Add Two Numbers 之JavaScript 多种解法
  • weixin_36751895
  • weixin_36751895
  • 2017年07月13日 12:45
  • 385

leetcode----Add Two Number 中学到的有关变量在内存中分配的问题

这段时间开始在leetcode上面做题,然后遇到了一个很奇怪的问题。 下面这一段是可以正确执行的代码 class Solution { public: ListNode* addTwoNumb...
  • CY_TEC
  • CY_TEC
  • 2015年12月24日 00:03
  • 450

【LeetCode】2. Add Two Numbers 解题报告

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51820937Subject 出处:https://leetcode.com/pro...
  • crazy1235
  • crazy1235
  • 2016年10月24日 19:46
  • 2694

2、add two numbers(python)

You are given two linked lists representing two non-negative numbers. The digits are stored in rever...
  • qq_28119401
  • qq_28119401
  • 2016年09月18日 21:49
  • 483

[LeetCode][2]Add Two Numbers解析 -Java实现

Q: You are given two linked lists representing two non-negative numbers. The digits are stored in re...
  • u014629433
  • u014629433
  • 2016年06月01日 16:34
  • 1929
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode Add Two Number
举报原因:
原因补充:

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