两数相加,针对ListNode的练习

创建ListNode

public class ListNode {
    int val;  // 链表的值
    ListNode next;   // 下一个链表

    public ListNode(int val) {
        this.val = val;
    }
}

1.给链表赋值:

ListNode  l1= new ListNode(2);

2.从链表中取值:

ListNode  l1= new ListNode(2);
int a = l1.val ;

经典练习题:

2. 两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.

题解样例
public class TestListNode {
    public static void main(String[] args) {
        // 构造第一个链表数值l1
        ListNode l1 = new ListNode(2);
        l1.next = new ListNode(4);
        ListNode L2 = l1.next;
        L2.next = new ListNode(3);
        // 构造第二个链表
        ListNode l2 = new ListNode(5);
        l2.next = new ListNode(6);
        ListNode next = l2.next;
        next.next = new ListNode(4);

        ListNode listNode = addTwoNumbers(l1, l2);
        System.out.println(listNode);
    }

    public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode list = new ListNode(0); // 构建链表
        ListNode newList = list;
        int carry = 0;
        while (l1 != null || l2 != null) {
            // 取值
            int l1_1 = l1 != null ? l1.val : 0;
            int l2_2 = l2 != null ? l2.val : 0;
            int sum = carry + l1_1 + l2_2;
               carry = sum / 10;  // 计算carry
            newList.next = new ListNode(sum % 10);  // 为下一个节点赋值
            newList = newList.next;  // 指针移动到下一个节点

            if (l1 != null) {
                l1 = l1.next;
            }
            if (l2 != null) {
                l2 = l2.next;
            }

        }
        if (carry > 0) {
            newList.next = new ListNode(carry);
        }
        return list.next;
    }

}

每天进步一点点~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目描述 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数...
    Leesper阅读 1,387评论 0 1
  • 两数相加 https://leetcode-cn.com/problems/add-two-numbers/[ht...
    Shimmer_阅读 1,733评论 0 1
  • 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 ...
    Qiansion齐木楠雄阅读 1,283评论 0 0
  • 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 ...
    大写的空气阅读 1,238评论 0 0
  • 线性表 定义:线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、...
    竹blue阅读 2,854评论 0 0

友情链接更多精彩内容