力扣题库——两数相加

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
List<Integer> list = new ArrayList<>();
		ListNode next1 = l1;
		ListNode next2 = l2;
		int carry = 0;
		while (next1 != null || next2 != null) {
			int v1 = next1 != null ? next1.val : 0;
			int v2 = next2 != null ? next2.val : 0;
			int sum = v1 + v2 + carry;
			list.add(sum % 10);
			carry = sum / 10;
			next1 = next1 != null ? next1.next : null;
			next2 = next2 != null ? next2.next : null;
		}
		if (carry > 0) {
			list.add(carry);
		}
		return buildListNode(list.toArray(new Integer[] { list.size() }));
    }

    public ListNode buildListNode(Integer[] is) {
		if (is.length == 0) {
			return null;
		}
		ListNode node = new ListNode(is[0]);
		ListNode tmp = node;
		for (int i = 1; i < is.length; i++) {
			tmp.next = new ListNode(is[i]);
			tmp = tmp.next;
		}
		return node;
    }
}

  

posted @ 2021-03-17 21:35  wusirzzz  阅读(75)  评论(0)    收藏  举报