leetcode:Add Two Numbers 【Java】

来源:互联网 发布:分享文章赚钱系统源码 编辑:程序博客网 时间:2024/05/22 16:37

一、问题描述

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

二、问题分析

当两个链表长度不一样长时,用0值补充为长度一致。

三、算法代码

/** * 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) {        ListNode head = new ListNode(-1);        ListNode pre = head;        int carry = 0;        int curOneValue = 0;        int curTwoValue = 0;        for(ListNode curOne = l1, curTwo = l2; curOne != null || curTwo != null;){            if(curOne == null) {                curOneValue = 0;            }else{                curOneValue = curOne.val;                curOne = curOne.next;            }            if(curTwo == null) {                curTwoValue = 0;            }else{                curTwoValue = curTwo.val;                curTwo = curTwo.next;            }            pre.next = new ListNode((curOneValue + curTwoValue + carry) % 10);            pre = pre.next;            carry = (curOneValue + curTwoValue + carry) / 10;        }        if(carry > 0){            pre.next = new ListNode(carry);        }        return head.next;    }}


0 0
原创粉丝点击