leetcode 鍊錶 25 k個一組翻轉鍊錶

2021-08-21 12:29:49 字數 1489 閱讀 7532

給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。

k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。

示例 :

給定這個鍊錶:1->2->3->4->5

當 k = 2 時,應當返回:2->1->4->3->5

當 k = 3 時,應當返回:3->2->1->4->5

說明 :

/*** definition for singly-linked list.

* struct listnode ;

*/struct listnode* reversekgroup(struct listnode* head, int k)

//先找到第一組,包含k個元素,newhead指向第一組後面的第乙個結點

struct listnode *newhead = head;

int count=0;

while(newhead && count < k)

//    1,     2,     3,        4,       5   k=2

//  head           newhead             newhead

//           temp

//    ---------------->

// newhead

//           head

//                  temp

//     

//如果第一組可以找全,則進行翻轉; 反之,不需要翻轉

if(count == k)

head = newhead;

}return head;

}/**

* definition for singly-linked list.

* struct listnode ;

*/struct listnode *reverselist(struct listnode *head, int k)

if(k>0) //不到k個元素,則無需翻轉

return head;

struct listnode *nexthead=pnext, *pcur=head, *temp=null; 

while(pcur != pnext) //前面k個元素以此翻轉

return nexthead;

}struct listnode* reversekgroup(struct listnode* head, int k)

struct listnode dummy=; //設定dummy首結點

struct listnode *pcur=&dummy;

while(pcur) //從前往後以此翻轉k個元素

}return dummy.next;

}

LeetCode題解 25 K 個一組翻轉鍊錶

給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。示例 給定這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3 5 當 k 3 時,應當返回 3 2 1...

25 k個一組翻轉鍊錶

給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。示例 給定這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3 5 當 k 3 時,應當返回 3 2 1 4 ...

25 K 個一組翻轉鍊錶

題目.有意思可以拆解為3個子問題 另外變數和邏輯比較多容易搞混,最好多定義幾個臨時變數 package main import fmt type listnode struct func printlist root listnode fmt.println func reverse head li...