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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Merge Two Sorted Lists leetcode java

發(fā)布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Merge Two Sorted Lists leetcode java 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目:

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

?

題解:

這道題是鏈表操作題,題解方法很直觀。

首先,進行邊界條件判斷,如果任一一個表是空表,就返回另外一個表。

然后,對于新表選取第一個node,選擇兩個表表頭最小的那個作為新表表頭,指針后挪。

然后同時遍歷兩個表,進行拼接。

因為表已經(jīng)是sorted了,最后把沒有遍歷完的表接在新表后面。

由于新表也會指針挪動,這里同時需要fakehead幫助記錄原始表頭。

代碼如下:

?1?????public?ListNode?mergeTwoLists(ListNode?l1,?ListNode?l2)?{
?2?????????if(l1==null)
?3?????????????return?l2;
?4?????????if(l2==null)
?5?????????????return?l1;
?6?????????????
?7?????????ListNode?l3;
?8?????????if(l1.val<l2.val){
?9?????????????l3?=?l1;
10?????????????l1?=?l1.next;
11?????????}else{
12?????????????l3?=?l2;
13?????????????l2?=?l2.next;
14?????????}
15?????????
16?????????ListNode?fakehead?=?new?ListNode(-1);
17?????????fakehead.next?=?l3;
18?????????while(l1!=null&&l2!=null){
19?????????????if(l1.val<l2.val){
20?????????????????l3.next?=?l1;
21?????????????????l3?=?l3.next;
22?????????????????l1?=?l1.next;
23?????????????}else{
24?????????????????l3.next?=?l2;
25?????????????????l3?=?l3.next;
26?????????????????l2?=?l2.next;
27?????????????}
28?????????}
29?????????
30?????????if(l1!=null)
31?????????????l3.next?=?l1;
32?????????if(l2!=null)
33?????????????l3.next?=?l2;
34?????????return?fakehead.next;
35?????}

?

更簡便的方法是,不需要提前選新表表頭。

對于新表聲明兩個表頭,一個是fakehead,一個是會挪動的指針,用于拼接。同時,邊界條件在后面的補拼中頁解決了,所以開頭沒必要做邊界判斷,這樣代碼簡化為:

?1?????public?ListNode?mergeTwoLists(ListNode?l1,?ListNode?l2)?{
?2?????????ListNode?fakehead?=?new?ListNode(-1);
?3?????????ListNode?l3?=?fakehead;
?4?????????while(l1!=null&&l2!=null){
?5?????????????if(l1.val<l2.val){
?6?????????????????l3.next?=?l1;
?7?????????????????l3?=?l3.next;
?8?????????????????l1?=?l1.next;
?9?????????????}else{
10?????????????????l3.next?=?l2;
11?????????????????l3?=?l3.next;
12?????????????????l2?=?l2.next;
13?????????????}
14?????????}
15?????????
16?????????if(l1!=null)
17?????????????l3.next?=?l1;
18?????????if(l2!=null)
19?????????????l3.next?=?l2;
20?????????return?fakehead.next;
21?????}

總結(jié)

以上是生活随笔為你收集整理的Merge Two Sorted Lists leetcode java的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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