LeetCode:两数相加

两数相加

  • 问题描述
  • 枚举法

问题描述

将两个链表相加(向右进位)

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
······················································
输入:l1 = [0], l2 = [0]
输出:[0]
······················································
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]

枚举法

先将每个节点相加,然后依次判断每个节点的大小,超过10则后面的节点增大1

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        List < ListNode > list = new LinkedList < > ();
        while(l1 != null || l2 != null) {
            if(null != l1 && null != l2) {
                list.add(new ListNode(l1.val + l2.val));
                l1 = l1.next;
                l2 = l2.next;
            } else if(l1 == null) {
                list.add(new ListNode(l2.val));
                l2 = l2.next;
            } else {
                list.add(new ListNode(l1.val));
                l1 = l1.next;
            }
        }
        for(int i = 0; i < list.size(); i++) {
            int val = list.get(i).val;
            if(i < list.size() - 1) {
                if(val > 9) {
                    list.get(i).val = val - 10;
                    list.get(i + 1).val++;
                }
                list.get(i).next = list.get(i + 1);
            } else {
                if(val > 9) {
                    list.get(i).val = val - 10;
                    list.get(i).next = new ListNode(1);
                }
            }
        }
        return list.get(0);
    }
}

你可能感兴趣的:(leetcode)