救救小白,LC第二题两数之和

看了一些关于链表的文章和视频,但都是讲链表的好处和怎么运转的。但代码部分没提,我就很懵b。

代码方法是我从LC上copy来的,但跑不起来,都是报错。

为什么public会有ListNode?这是关键字吗?搜了百度并不是,为什么这个能夹在方法和public中间?

ListNode方法调用时该传递数组类型实参吗?

能不能给个正确的样子怎么在main方法用syso打印输出跑起官方给的方法。

方法来源:leetcode中等两数之和官方java答案。

少了一个 ListNode 类,把它放到 DemoMedium1 的同一个包中。

public class ListNode {
    int val;
    ListNode next = null;

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

    // 添加新的结点
    public void add(int newval) {
        ListNode newNode = new ListNode(newval);
        if (this.next == null)
            this.next = newNode;
        else
            this.next.add(newval);
    }

    // 打印链表
    public void print() {
        System.out.print(this.val);
        if (this.next != null) {
            System.out.print("-->");
            this.next.print();
        } else {
            System.out.println();
        }
    }
}

测试如下:

    public static void main(String[] args) {
        ListNode listNode1 = new ListNode(1);
        listNode1.add(2);
        listNode1.add(3);
        ListNode listNode2 = new ListNode(2);
        listNode2.add(3);
        listNode2.add(5);
        System.out.println(addTwoNumbers(listNode1, listNode2).val);
    }

 

完整代码或者链接贴出来

可以参考这篇文章,希望对你有帮助:https://blog.csdn.net/weixin_42460407/article/details/114047336

public class demoMedium1 {
    public static void main(String[] args) {
    int[] nums = new int[] { 1,2 ,3 };
    int[] nums2 = new int[] { 2,3 ,5 };
        System.out.println(addTwoNumbers(nums,nums2));

    }

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode head = null, tail = null;
        int carry = 0;
        while (l1 != null || l2 != null) {
            int n1 = l1 != null ? l1.val : 0;
            int n2 = l2 != null ? l2.val : 0;
            int sum = n1 + n2 + carry;
            if (head == null) {
                head = tail = new ListNode(sum % 10);
            } else {
                tail.next = new ListNode(sum % 10);
                tail = tail.next;
            }
            carry = sum / 10;
            if (l1 != null) {
                l1 = l1.next;
            }
            if (l2 != null) {
                l2 = l2.next;
            }
        }
        if (carry > 0) {
            tail.next = new ListNode(carry);
        }
        return head;
    }

}

 

一共两个类,放在同一个包中就行:

public class ListNode {
    int val;
    ListNode next = null;

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

    // 添加新的结点
    public void add(int newval) {
        ListNode newNode = new ListNode(newval);
        if (this.next == null)
            this.next = newNode;
        else
            this.next.add(newval);
    }

    // 打印链表
    public void print() {
        System.out.print(this.val);
        if (this.next != null) {
            System.out.print("-->");
            this.next.print();
        } else {
            System.out.println();
        }
    }
}
public class demoMedium1 {
    public static void main(String[] args) {
        ListNode listNode1 = new ListNode(1);
        listNode1.add(2);
        listNode1.add(3);
        ListNode listNode2 = new ListNode(2);
        listNode2.add(3);
        listNode2.add(5);
        addTwoNumbers(listNode1, listNode2).print();
    }

    public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode head = null, tail = null;
        int carry = 0;
        while (l1 != null || l2 != null) {
            int n1 = l1 != null ? l1.val : 0;
            int n2 = l2 != null ? l2.val : 0;
            int sum = n1 + n2 + carry;
            if (head == null) {
                head = tail = new ListNode(sum % 10);
            } else {
                tail.next = new ListNode(sum % 10);
                tail = tail.next;
            }
            carry = sum / 10;
            if (l1 != null) {
                l1 = l1.next;
            }
            if (l2 != null) {
                l2 = l2.next;
            }
        }
        if (carry > 0) {
            tail.next = new ListNode(carry);
        }
        return head;
    }
}

 

少了一个 ListNode 类,把它放到 DemoMedium1 的同一个包中。

public class ListNode {
    int val;
    ListNode next = null;

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

    // 添加新的结点
    public void add(int newval) {
        ListNode newNode = new ListNode(newval);
        if (this.next == null)
            this.next = newNode;
        else
            this.next.add(newval);
    }

    // 打印链表
    public void print() {
        System.out.print(this.val);
        if (this.next != null) {
            System.out.print("-->");
            this.next.print();
        } else {
            System.out.println();
        }
    }
}

测试如下:

    public static void main(String[] args) {
        ListNode listNode1 = new ListNode(1);
        listNode1.add(2);
        listNode1.add(3);
        ListNode listNode2 = new ListNode(2);
        listNode2.add(3);
        listNode2.add(5);
        addTwoNumbers(listNode1, listNode2).print();

    }