美文网首页
leetcode 2 两数相加

leetcode 2 两数相加

作者: justonemoretry | 来源:发表于2019-10-09 13:59 被阅读0次

    Java解法

    这个题的解法并不难想,就是从前往后加,有进位就记录下来,取余得到的结果就是当前位数的值。不过有两个地方容易走弯路:

    一是新链表的生成,一般需要一个预指针pre,因为在后面当前cur指针移动的时候,会不断向后移动,返回的时候会失去头指针。还有就是,没有预指针的情况下,新链表的头指针要有专门的判断,后面的节点才能挂上去。

    二是两个链表长度不一致时,当一个链表遍历结束后,要不要跳出循环,跳出循环的话,还要判断哪个为null,再拼到新链表后面,比较麻烦,可以采用高位补0的方式,为null的链表,计算时加0就不用关注这个问题啦。还有就是最后有进位的情况下,需要为进位新建节点。

    /**

    * Definition for singly-linked list.

    * public class ListNode {

    *    int val;

    *    ListNode next;

    *    ListNode(int x) { val = x; }

    * }

    */

    class Solution {

        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {

            ListNode pre = new ListNode(0);

            ListNode cur = pre;

            int carrier = 0;

            while (l1 != null || l2 != null) {

                int x = 0;

                int y = 0;

                if (l1 != null) {

                    x = l1.val;   

                }

                if (l2 != null) {

                    y = l2.val;   

                }

                int sum = x + y + carrier;

                int num = sum % 10;

                carrier = sum / 10;

                cur.next = new ListNode(num);

                cur = cur.next;

                if (l1 != null) {

                    l1 = l1.next;   

                }

                if (l2 != null) {

                    l2 = l2.next;   

                }

            }

            if (carrier > 0) {

                cur.next = new ListNode(carrier);

            }

            return pre.next;

        }

    }

    相关文章

      网友评论

          本文标题:leetcode 2 两数相加

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