• Leet Code 2.两数相加


    2.两数相加

    题目描述

    给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

    示例

    输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
    输出:7 -> 0 -> 8
    原因:342 + 465 = 807
    

    解题思路

    • 对两个链表的起始位进行相加,保存在第三个链表节点。
    • 需要注意进位,若进位为1,则下一位要加一,若是最后的进位仍为1,则需要将结果链表多一位。

    代码

    class Solution {
        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
            
            ListNode newnode = new ListNode(0);
            ListNode l3 = newnode;
            int c = 0;
        	while(l1 != null || l2 != null || c > 0) {
                int sum = ((l1 != null) ? l1.val : 0) + ((l2 != null) ? l2.val : 0) + c;
        			c = sum/10;
        		l3.next = new ListNode(sum%10);
        		l3 = l3.next;
                if(l1!=null)
                {
                l1 = l1.next;
                }
        		if(l2!=null)
                {
                l2 = l2.next;
                }
        	}
        	return newnode.next;
        }
    }
    

    题目难点及收获

    • 构建链表的细节,因为刚接触Java,之前用C。构建链表时并没有注意到不能对空指针操作。
    • coding中,了解到静态内部类不能访问非静态类的方法。这是由于非静态类不是一开始就编译好的,静态方法执行优先于非静态。
  • 相关阅读:
    广度优先搜索(一)
    快速幂
    office 2013
    最著名的十大公式
    二分查找的上下界
    双关键字快速排序
    字符串操作
    分治算法练习(二)
    P3119 [USACO15JAN]草鉴定[SCC缩点+SPFA]
    P3225 [HNOI2012]矿场搭建[割点]
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/11855456.html
Copyright © 2020-2023  润新知