日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

LeetCode题库整理【Java】—— 2 两数相加

發(fā)布時(shí)間:2025/3/11 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode题库整理【Java】—— 2 两数相加 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

LeetCode題庫整理【Java】

2.兩數(shù)相加

題目:給出兩個(gè) 非空 的鏈表用來表示兩個(gè)非負(fù)的整數(shù)。其中,它們各自的位數(shù)是按照 逆序 的方式存儲(chǔ)的,并且它們的每個(gè)節(jié)點(diǎn)只能存儲(chǔ) 一位 數(shù)字。
如果,我們將這兩個(gè)數(shù)相加起來,則會(huì)返回一個(gè)新的鏈表來表示它們的和。
您可以假設(shè)除了數(shù)字 0 之外,這兩個(gè)數(shù)都不會(huì)以 0 開頭。

示例1

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

示例2

輸入:(9) + (1 -> 9-> 9-> 9-> 9-> 9 -> 9)
輸出:1 -> 0 -> 0
原因:9 + 9999991 = 10000000

class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode head1 = l1;ListNode head2 = l2;ListNode head3 = new ListNode(0);ListNode result =head3;//進(jìn)位標(biāo)志boolean flag = false;while(head1!=null || head2!=null) {//獲取對(duì)應(yīng)位置的值然后相加int x = (head1!=null) ? head1.val : 0;int y = (head2!=null) ? head2.val : 0;int sum = flag ? x+y+1 : x+y;//判斷是否有新的進(jìn)位if( (sum/10) != 0) {sum %= 10;flag = true;}elseflag = false;//新增節(jié)點(diǎn)result.next = new ListNode(sum % 10);result = result.next;if (head1 != null)head1 = head1.next;if (head2 != null)head2 = head2.next; }//處理最后一位相加之后的進(jìn)位if(flag)result.next=new ListNode(1);return head3.next;} }

在自己的電腦軟件上做測(cè)試時(shí),可以將ListNode類寫為內(nèi)部類,在public ListNode addTwoNumbers(ListNode l1,ListNode l2) { }方法體中補(bǔ)全代碼,在主函數(shù)main()入口中輸入鏈表l1和l2的內(nèi)容并生成鏈表,并將輸出結(jié)果l3的內(nèi)容打印出來。

完整的Java測(cè)試代碼如下

/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/ package leet.code;import java.util.Scanner;public class AddTwoNumbers {@SuppressWarnings("resource")public static void main(String[] args) {// TODO Auto-generated method stubAddTwoNumbers add = new AddTwoNumbers(); AddTwoNumbers.ListNode head1 = add.new ListNode(0);AddTwoNumbers.ListNode l1=head1;AddTwoNumbers.ListNode head2 = add.new ListNode(0);AddTwoNumbers.ListNode l2=head2;AddTwoNumbers.ListNode head3 = add.new ListNode(0);Scanner sc = new Scanner(System.in);//在控制臺(tái)輸入鏈表l1各個(gè)節(jié)點(diǎn)的值,以逗號(hào)隔開String str1 = sc.nextLine();String[] num1 = str1.split(",");//用逗號(hào)隔開int[] num1int = new int[num1.length];for(int i=0;i<num1int.length;i++) {num1int[i] = Integer.parseInt(num1[i]);l1.next = add.new ListNode(num1int[i]);l1 = l1.next;} head1 = head1.next;//在控制臺(tái)輸入鏈表l2各個(gè)節(jié)點(diǎn)的值,以逗號(hào)隔開String str2 = sc.nextLine();String[] num2 = str2.split(",");//用逗號(hào)隔開int[] num2int = new int[num2.length];for(int i=0;i<num2int.length;i++) {num2int[i] = Integer.parseInt(num2[i]);l2.next = add.new ListNode(num2int[i]);l2 = l2.next;}head2 = head2.next;head3 = add.addTwoNumbers(head1, head2);while(head3!=null) {System.out.println(head3.val); head3=head3.next;}}public class ListNode { //建立內(nèi)部類ListNodeint val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.val = val; this.next = next; }}public ListNode addTwoNumbers(ListNode l1,ListNode l2) {ListNode head1 = l1;ListNode head2 = l2;ListNode head3 = new ListNode(0);ListNode result =head3;//進(jìn)位標(biāo)志boolean flag = false;while(head1!=null || head2!=null) {//獲取對(duì)應(yīng)位置的值然后相加int x = (head1!=null) ? head1.val : 0;int y = (head2!=null) ? head2.val : 0;int sum = flag ? x+y+1 : x+y;//判斷是否有新的進(jìn)位if( (sum/10) != 0) {sum %= 10;flag = true;}elseflag = false;//新增節(jié)點(diǎn)result.next = new ListNode(sum % 10);result = result.next;if (head1 != null)head1 = head1.next;if (head2 != null)head2 = head2.next; }//處理最后一位相加之后的進(jìn)位if(flag)result.next=new ListNode(1);return head3.next;} }


參考網(wǎng)址:https://www.cnblogs.com/mfrank/p/10472639.html
該文章中還給出了很多人可能會(huì)踩坑的解題思路,并且給出了代碼,也寫得很有趣

總結(jié)

以上是生活随笔為你收集整理的LeetCode题库整理【Java】—— 2 两数相加的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。