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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

BM2 链表内指定区间反转

發布時間:2024/9/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BM2 链表内指定区间反转 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

描述

將一個節點數為 size 鏈表 m?位置到?n 位置之間的區間反轉,要求時間復雜度?O(n)O(n),空間復雜度?O(1)O(1)。
例如:
給出的鏈表為 1→2→3→4→5→NULL,?m=2,n=4m=2,n=4,
返回 1→4→3→2→5→NULL.
?

數據范圍: 鏈表長度 0 < size \le 10000<size≤1000,0 < m \le n \le size0<m≤n≤size,鏈表中每個節點的值滿足 |val| \le 1000∣val∣≤1000

要求:時間復雜度 O(n)O(n) ,空間復雜度 O(n)O(n)

進階:時間復雜度 O(n)O(n),空間復雜度 O(1)O(1)

示例1

輸入:

{1,2,3,4,5},2,4

返回值:

{1,4,3,2,5}

示例2

輸入:

{5},1,1

返回值:

{5} /*** struct ListNode {* int val;* struct ListNode *next;* };** C語言聲明定義全局變量請加上static,防止重復定義*/ /*** 代碼中的類名、方法名、參數名已經指定,請勿修改,直接返回方法規定的值即可** * @param head ListNode類 * @param m int整型 * @param n int整型 * @return ListNode類*/ struct ListNode* reverseBetween(struct ListNode* head, int m, int n ) {// write code herestruct ListNode* t;struct ListNode* new;struct ListNode* mi;struct ListNode* pre=NULL;struct ListNode* pro;if(m==n){return head;}else{ //總共分為三部分:m之前的頭和尾,[m,n]的逆轉后的頭和尾,n之后的頭t=head; //保存表頭for(int j=0;j<m-1;j++){ //m大于1的時候pre=head; //指向m-1的節點,m不為1head=head->next;}//此時head是指向m節點的mi=head; //逆序后的子表尾第n個節點for(int i=m;i<=n;i++){new=head->next;head->next=pro;pro=head; //指向逆序后的子表頭head=new; //指向n+1個節點} mi->next=head;if(pre!=NULL)pre->next=pro;else //如果為空,則m從第一個位置開始t=pro; return t;} }

總結

以上是生活随笔為你收集整理的BM2 链表内指定区间反转的全部內容,希望文章能夠幫你解決所遇到的問題。

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