码迷,mamicode.com
首页 > 编程语言 > 详细

Leetcode 2. Add Two Numbers (java)

时间:2018-03-01 23:27:42      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:style   class   地址   tps   ber   tco   开始   new   number   

解法:

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode l3 = null;
        boolean add = false;
        while (l1 != null || l2 != null) {
            //位数相加
            int plus;
            if (l1 == null) {
                plus = l2.val;
            } else if (l2 == null) {
                plus = l1.val;
            } else {
                plus = l1.val + l2.val;
            }
            if (add) {
                plus++;
                add = false;
            }
            //生成节点
            ListNode temp;
            if (plus >= 10) {
                temp = new ListNode(plus % 10);
                add = true;
            } else {
                temp = new ListNode(plus);
            }
            //拼接节点
            ListNode l3Head = l3;
            if (l3 == null) {
                l3 = temp;
                if (add &&  (l1 == null || l1.next == null) && (l2 == null || l2.next == null)) {
                    l3.next = new ListNode(1);
                }
            } else {
                while (l3Head.next != null) {
                    l3Head = l3Head.next;
                }
                l3Head.next = temp;
                if (add &&  (l1 == null || l1.next == null) && (l2 == null || l2.next == null)) {
                    l3Head.next.next = new ListNode(1);
                }
            }
            //跳到下一位
            if (l1 == null) {
                l2 = l2.next;
            } else if (l2 == null) {
                l1 = l1.next;
            } else {
                l1 = l1.next;
                l2 = l2.next;
            }

        }
        return l3;
    }
}

 

最开始有三种思路:

  1. 转换成数值相加后,在转换成链表,但数值过大,使用long也不足以存储
  2. 翻转链表进行相加,但未翻转前更便于相加进位
  3. 直接使用链表进行相加进位

最后采用了最后一种思路

 

github地址:https://github.com/CyanChan/Leetcode-Record

Leetcode 2. Add Two Numbers (java)

标签:style   class   地址   tps   ber   tco   开始   new   number   

原文地址:https://www.cnblogs.com/CyanChan/p/8490731.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!