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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

LeetCode 2074. 反转偶数长度组的节点(链表)

發布時間:2024/7/5 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 2074. 反转偶数长度组的节点(链表) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

給你一個鏈表的頭節點 head 。

鏈表中的節點 按順序 劃分成若干 非空 組,這些非空組的長度構成一個自然數序列(1, 2, 3, 4, …)。一個組的 長度 就是組中分配到的節點數目。換句話說:

  • 節點 1 分配給第一組
  • 節點 2 和 3 分配給第二組
  • 節點 4、5 和 6 分配給第三組,以此類推

注意,最后一組的長度可能小于或者等于 1 + 倒數第二組的長度 。

反轉 每個 偶數 長度組中的節點,并返回修改后鏈表的頭節點 head 。

示例 1:

輸入:head = [5,2,6,3,9,1,7,3,8,4] 輸出:[5,6,2,3,9,1,4,8,3,7] 解釋: - 第一組長度為 1 ,奇數,沒有發生反轉。 - 第二組長度為 2 ,偶數,節點反轉。 - 第三組長度為 3 ,奇數,沒有發生反轉。 - 最后一組長度為 4 ,偶數,節點反轉。

示例 2:

輸入:head = [1,1,0,6] 輸出:[1,0,1,6] 解釋: - 第一組長度為 1 ,沒有發生反轉。 - 第二組長度為 2 ,節點反轉。 - 最后一組長度為 1 ,沒有發生反轉。

示例 3:

輸入:head = [2,1] 輸出:[2,1] 解釋: - 第一組長度為 1 ,沒有發生反轉。 - 最后一組長度為 1 ,沒有發生反轉。示例 4: 輸入:head = [8] 輸出:[8] 解釋:只有一個長度為 1 的組,沒有發生反轉。提示: 鏈表中節點數目范圍是 [1, 10^5] 0 <= Node.val <= 10^5

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/reverse-nodes-in-even-length-groups
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

  • 鏈表反轉
  • prevtail記錄前一段的末尾,L, R 記錄當前段的起始和結束,nthead 記錄下一段的開始
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/ class Solution { public:ListNode* reverseEvenLengthGroups(ListNode* head) {int num = 1, len = 0;ListNode* prevtail = head, *L = NULL, *R = NULL, *cur = head, *nthead = NULL;while(cur){L = R = cur->next;num++;int n = num;len = 0; while(cur->next && n--){len++;R = cur->next;cur = cur->next;}nthead = R ? R->next : NULL;if(len%2==0){if(R)R->next = NULL;//斷開,準備反轉當前 [L,R]prevtail->next = revlist(L);cur = prevtail = L;if(cur)cur->next = nthead;}else{cur = prevtail = R;}}return head;}ListNode* revlist(ListNode* head){ListNode* prev = NULL, *cur = head, *nt = NULL;while(cur){nt = cur->next;cur->next = prev;prev = cur;cur = nt;}return prev;} };

876 ms 321.8 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的LeetCode 2074. 反转偶数长度组的节点(链表)的全部內容,希望文章能夠幫你解決所遇到的問題。

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