当前位置: 代码迷 >> 综合 >> leetcode练习题 rotate-list
  详细解决方案

leetcode练习题 rotate-list

热度:8   发布时间:2023-12-15 09:59:49.0

解题思路

指针p先走k步,若p为空,则从头开始继续走。之后让q指针从头开始与p同时往后走(当p->next不为空的时候),若q->next为空的时候,则链表不需要倒转,直接返回原链表,否则,将链表进行倒转,q->next到末尾作为新链表的前半部分,将原链表的头部到q作为新链表的后半部分,直接连接到p->next。

代码

class Solution {
public:ListNode *rotateRight(ListNode *head, int k) {if(head == NULL)return NULL;if(k == 0)return head;ListNode *first = new ListNode(0);ListNode *p = head;ListNode *q = head;while(k--){p = p->next;if(p == NULL)p = head;}while(p->next){p = p->next;q = q->next;}if(q->next == NULL)return head;else{first->next = q->next;q->next = NULL;p->next = head;return first->next;}}
};
  相关解决方案