旋轉鏈表

Leecode刷題

  • 題目描述

給定一個鏈表,旋轉鏈表,將鏈表每個節點向右移動 k 個位置,其中 k 是非負數。

  • 示例

輸入: 1->2->3->4->5->NULL, k = 2
輸出: 4->5->1->2->3->NULL
解釋:
向右旋轉 1 步: 5->1->2->3->4->NULL
向右旋轉 2 步: 4->5->1->2->3->NULL

  • 代碼
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* rotateRight(ListNode* head, int k) 
    {
	if (!head)return NULL;
	ListNode *p1 = head;
	int len = 1;
	while (p1->next) {
		p1 = p1->next;
		len++;
	}
	p1->next = head;
	k %= len;
	for (int i = 1; i < len - k + 1; i++) {
		p1 = p1->next;
		head = head->next;
	}
	p1->next = NULL;
	return head;
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章