leetcode 92. Reverse Linked List II
题目描述
92. Reverse Linked List II 是第206题的进阶版206. Reverse Linked List
思路很简单,但一次性通过还是有点难度的。
/*** 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* reverseBetween(ListNode* head, int left, int right) {if(left == right)return head;ListNode* firstTail = nullptr;ListNode* leftHead = head;for(int i = 1;i < left;i++){firstTail = leftHead;leftHead = leftHead->next;}int count = right - left;ListNode* pre = leftHead;ListNode* cur = leftHead->next;ListNode* temp = nullptr;while(count--){temp = cur->next;cur->next=pre;pre = cur;cur = temp;}leftHead->next = temp; if(head == leftHead){head = pre;}else{firstTail->next = pre;}return head;}
};
对比leetcode 206. 反转链表-CSDN博客