給出乙個鍊錶,每 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...