欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Leetcode2 两数相加

程序员文章站 2022-04-04 09:02:56
...

Leetcode2 两数相加

题目描述

Leetcode2 两数相加

代码实现

public class AddTwoNumbers
{
	public static void main(String[] args)
	{
		// 链表 1
        ListNode list1Node1 = new ListNode(2);
        ListNode list1Node2 = new ListNode(4);
        ListNode list1Node3 = new ListNode(3);
        list1Node1.next = list1Node2;
        list1Node2.next = list1Node3;

        // 链表 2
        ListNode list2Node1 = new ListNode(5);
        ListNode list2Node2 = new ListNode(6);
        ListNode list2Node3 = new ListNode(4);
        list2Node1.next = list2Node2;
        list2Node2.next = list2Node3; 

        ListNode resListNode = addTwoNumbers(list1Node1, list2Node1);
        listNodePrint(resListNode);
	}	
	public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
		int sum=0;
		ListNode dummy=new ListNode(0);
		ListNode cur=dummy;
		ListNode p1=l1,p2=l2;
		while (p1!=null||p2!=null)
		{
			if (p1!=null)
			{
				sum+=p1.val;
				p1=p1.next;
			}
			if (p2!=null)
			{
				sum+=p2.val;
				p2=p2.next;
			}
			cur.next=new ListNode(sum%10);
			sum/=10;
			cur=cur.next;	
		}
		if (sum==1)
		{
			cur.next=new ListNode(1);
		}
		return dummy.next;	
	}	
	//递归打印链表
		 public static void listNodePrint(ListNode listNode) {

		        if (listNode == null) {
		            return;
		        }

		        if (listNode.next == null) {
		            System.out.println(listNode.val);
		            return;
		        }

		        System.out.println(listNode.val);
		        listNodePrint(listNode.next);
		    }	
}
// 定义链表
 class ListNode{
    int val;
    ListNode next;
    ListNode(int val){
        this.val = val;
    }
}