{ "title": "Java 实现两数相加 - LeetCode 2 - 代码详解和测试", "description": "本篇文章深入讲解了 LeetCode 第 2 题 "两数相加" 的 Java 实现,并提供了详细的代码注释和测试用例。通过阅读本文,您可以学习如何使用链表结构进行数字加法操作,并掌握相关算法技巧。", "keywords": "LeetCode, 两数相加, 链表, Java, 算法, 代码详解, 测试用例", "content": "package addTwoNumbers;

//两数相加

public class addTwoNumbers { public static class ListNode { int val; ListNode next; public ListNode() {} public ListNode(int val) { this.val = val; } public ListNode(int val, ListNode next) { this.val = val; this.next = next; } }

public ListNode Solution(ListNode l1, ListNode l2) {
    ListNode l3 = new ListNode(-1); //定义一个新链表的头节点l3
    ListNode node3 = l3; //定义头节点的副本node3
    int ex = 0; //定义一个进位值ex

    while (l1 != null || l2 != null){
        ListNode nodeNext = new ListNode(-1); //定义node的后继节点
        node3.next = nodeNext;
        //将l1的val赋值给a
        int a = 0;
        if (l1 != null){
            a = l1.val;
        }
        //将l2的val赋值给b
        int b = 0;
        if (l2 != null){
            b = l2.val;
        }
        //将a和b的和赋值给c再加上进位值ex即为放入新链表的和
        int c = a + b + ex;
        //进行判断;若c >= 10 则产生进位值
        if (c >= 10){
            c =  c - 10;
            nodeNext.val = c;
            ex = 1;
        }else {
            nodeNext.val = c;
            ex = 0;
        }

        //以下各节点往后走一步
        node3 = node3.next;
        if (l1 != null) {
            l1 = l1.next;
        }
        if (l2 != null) {
            l2 = l2.next;
        }
    }
    //若循环走完仍然有进位值,则说明最后一位值位10,所以再新建一个尾巴节点值位1
    if (ex == 1){
        ListNode cur = new ListNode(1);
        node3.next = cur;
    }
    //返回头节点的next域
    return l3.next;
}

} public class Main { public static void main(String[] args) { // 创建两个测试链表 addTwoNumbers.ListNode l1 = new addTwoNumbers.ListNode(2); l1.next = new addTwoNumbers.ListNode(4); l1.next.next = new addTwoNumbers.ListNode(3);

    addTwoNumbers.ListNode l2 = new addTwoNumbers.ListNode(5);
    l2.next = new addTwoNumbers.ListNode(6);
    l2.next.next = new addTwoNumbers.ListNode(4);

    // 创建addTwoNumbers对象并调用Solution方法
    addTwoNumbers solution = new addTwoNumbers();
    addTwoNumbers.ListNode result = solution.Solution(l1, l2);

    // 输出结果
    while (result != null) {
        System.out.print(result.val + " ");
        result = result.next;
    }
}

}


原文地址: https://www.cveoy.top/t/topic/pRkr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录