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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Reverse Linked List II leetcode java

發布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Reverse Linked List II leetcode java 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

Reverse a linked list from position m to n. Do it in-place and in one-pass.

For example:
Given 1->2->3->4->5->NULL, m = 2 and n = 4,

return 1->4->3->2->5->NULL.

Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.

?

題解

?經典的題目就是鏈表逆序啦,一般的鏈表逆序是讓把鏈表從前到后都逆序,這個是給定了起始位置和結束位置,方法是一樣的。

?就是維護3個指針,startpoint,node1和node2。

?startpoint永遠指向需要開始reverse的點的前一個位置。

?node1指向正序中第一個需要rever的node,node2指向正序中第二個需要reverse的node。

?交換后,node1 在后,node2在前。這樣整個鏈表就逆序好了。

?

代碼如下:

?1?????public?ListNode?reverseBetween(ListNode?head,?int?m,?int?n)?{
?2?????????ListNode?newhead?=?new?ListNode(-1);
?3?????????newhead.next?=?head;
?4?????????
?5?????????if(head==null||head.next==null)
?6?????????????return?newhead.next;
?7?????????????
?8?????????ListNode?startpoint?=?newhead;//startpoint指向需要開始reverse的前一個
?9?????????ListNode?node1?=?null;//需要reverse到后面去的節點
10?????????ListNode?node2?=?null;//需要reverse到前面去的節點
11?????????
12?????????for?(int?i?=?0;?i?<?n;?i++)?{
13?????????????if?(i?<?m-1){
14?????????????????startpoint?=?startpoint.next;//找真正的startpoint
15?????????????}?else?if?(i?==?m-1)?{//開始第一輪
16?????????????????node1?=?startpoint.next;
17?????????????????node2?=?node1.next;
18?????????????}else?{
19?????????????????node1.next?=?node2.next;//node1交換到node2的后面
20?????????????????node2.next?=?startpoint.next;//node2交換到最開始
21?????????????????startpoint.next?=?node2;//node2作為新的點
22?????????????????node2?=?node1.next;//node2回歸到node1的下一個,繼續遍歷
23?????????????}
24?????????}
25?????????return?newhead.next;
26?????}

?

總結

以上是生活随笔為你收集整理的Reverse Linked List II leetcode java的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。