博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode2——Add Two Numbers
阅读量:3977 次
发布时间:2019-05-24

本文共 2515 字,大约阅读时间需要 8 分钟。

文章作者:Tyan

博客:  |   | 

1. 问题描述

You are given two non-empty linked lists representing two non-negative integers. 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.

You may assume the two numbers do not contain any leading zero, except the number 0 itself.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)Output: 7 -> 0 -> 8

2. 求解

方法一

先求解两个链表的和,直接一个链表结束或两个链表同时结束,然后再处理没结束链表的剩下部分。

public class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) { int sum = 0; int a = 0; int b = 0; int quotient = 0; ListNode head = new ListNode(0); ListNode current = head; while(l1 != null && l2 !=null) { a = l1.val; b = l2.val; sum = a + b + quotient; current.next = new ListNode(sum % 10); quotient = sum / 10; l1 = l1.next; l2 = l2.next; current = current.next; } ListNode temp = null; if(l1 != null) { temp = l1; }else if(l2 != null) { temp = l2; }else { if(quotient != 0) { temp = new ListNode(0); } } while(temp != null) { sum = temp.val + quotient; current.next = new ListNode(sum % 10); quotient = sum / 10; temp = temp.next; current = current.next; } if(quotient != 0) { current.next = new ListNode(quotient); } return head.next; }}

方法二

方法一中的代码有较多的冗余,例如current.next = new ListNode(sum % 10);出现了两次,两次while循环的逻辑是非常类似的,经过代码的变换可以将两部分合成一部分,即同时处理两个链表直至两个链表都结束。

public class Solution {    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {        int sum = 0;        int a = 0;        int b = 0;        int quotient = 0;        ListNode head = new ListNode(0);        ListNode current = head;        while(l1 != null || l2 !=null) {            if(l1 ==null) {                a = 0;            }else {                a = l1.val;                l1 = l1.next;            }            if(l2 == null) {                b = 0;            }else {                b = l2.val;                l2 = l2.next;            }            sum = a + b + quotient;            current.next = new ListNode(sum % 10);            quotient = sum / 10;            current = current.next;        }        if(quotient != 0) {             current.next = new ListNode(quotient);        }        return head.next;    }}

转载地址:http://tdwui.baihongyu.com/

你可能感兴趣的文章
Maven——(2)POM
查看>>
Maven——(3)Maven常用命令与生命周期
查看>>
Maven(4)——Maven仓库
查看>>
Maven(5)——Maven依赖
查看>>
Maven(6)——Maven插件浅谈
查看>>
MyBatis逆向工程——MyBatis Generator (MBG)-简单介绍与运行步骤(1)
查看>>
Maven(7)——项目构建
查看>>
Maven(8)——项目构建后续
查看>>
Maven(X)——Maven错误总结
查看>>
Maven(9)——聚合继承与多模块项目
查看>>
Maven(10)——Maven相关配置说明
查看>>
IntelliJ IDEA(1)——下载安装启动
查看>>
IntelliJ IDEA(2)——常用配置
查看>>
IntelliJ IDEA(3)——快捷键与模板
查看>>
IntelliJ IDEA(X)——IDEA常见错误
查看>>
IntelliJ IDEA(4)——创建项目相关
查看>>
IntelliJ IDEA(5)——Java项目创建
查看>>
IntelliJ IDEA(6)——JavaWeb项目创建
查看>>
IntelliJ IDEA(7)——Maven创建简单项目
查看>>
IntelliJ IDEA(XX)——其他配置
查看>>