Advertisement
Jeremiah_

92. Reverse Linked List II - LeetCode

Jul 1st, 2020
1,150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. /**
  2.  * Definition for singly-linked list.
  3.  * struct ListNode {
  4.  *     int val;
  5.  *     ListNode *next;
  6.  *     ListNode() : val(0), next(nullptr) {}
  7.  *     ListNode(int x) : val(x), next(nullptr) {}
  8.  *     ListNode(int x, ListNode *next) : val(x), next(next) {}
  9.  * };
  10.  */
  11. class Solution {
  12. public:
  13.     ListNode* reverseBetween(ListNode* head, int m, int n) {
  14.         vector<ListNode*> revers;
  15.        
  16.         ListNode* node;
  17.         ListNode* start = node;
  18.         int i = 0;
  19.        
  20.        
  21.         while (head){
  22.             i++;
  23.             if (i >= m && i < n) {
  24.                 revers.push_back(head);
  25.                 head = head->next;
  26.             }else if (i == n && !revers.empty()) {
  27.                 revers.push_back(head);
  28.                 reverse(revers.begin(), revers.end());
  29.                 for (auto a : revers) {
  30.                     node->next = a;
  31.                     node = node->next;
  32.                 }
  33.                 head = head->next;
  34.             }else {
  35.                 node->next = head;
  36.                 node = node->next;
  37.                 head = head->next;
  38.             }
  39.         }
  40.         return start->next;
  41.     }
  42. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement