链表题

作者: 木有鱼丸啦 | 来源:发表于2019-07-21 23:17 被阅读0次

    /**给定两个 非空 链表来表示两个非负整数。位数按照 逆序 方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。

    你可以假设除了数字 0 之外,这两个数字都不会以零开头。

    示例:

    输入: (2 -> 4 -> 3) + (5 -> 6 -> 4)

    输出: 7 -> 0 -> 8

    原因: 342 + 465 = 807

    * Add Two Numbers

    * 两数相加

    */

    public class ListNode {

        public int val;

        public ListNode next;

        public ListNode(int i) {

            this.val = i;

        }

        public int val() {

            return val;

        }

    }

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {

        ListNode dummyHead = new ListNode(0);

        ListNode p = l1, q = l2, curr = dummyHead;

        int carry = 0;

        while (p != null || q != null) {

            int x = (p != null) ? p.val : 0;

            int y = (q != null) ? q.val : 0;

            int sum = carry + x + y;

            carry = sum / 10;

            curr.next = new ListNode(sum % 10);

            curr = curr.next;

            if (p != null) p = p.next;

            if (q != null) q = q.next;

        }

        if (carry > 0) {

            curr.next = new ListNode(carry);

        }

        return dummyHead.next;

    }

    相关文章

      网友评论

          本文标题:链表题

          本文链接:https://www.haomeiwen.com/subject/iyjblctx.html