标签:step 负数 link nbsp 直接 返回 str return val
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution 10 { 11 public: 12 ListNode* rotateRight(ListNode* head, int k) 13 { 14 //k为非负数,即0和正数 15 //如果k为0或者head为空,则直接返回head 16 if(k == 0 || head == NULL) return head; 17 int len = 0; 18 ListNode *p = head; 19 while(p) len++,p = p->next;//求链表的长度 20 21 k %= len;//求模 22 if(k == 0) return head;//如果这个模值为0,则直接返回head 23 24 ListNode* dummy = new ListNode(-1);//建立一个虚拟节点 25 dummy->next = head; 26 27 ListNode* p1 = dummy; 28 ListNode* p2 = head; 29 int step = len - k; 30 while(step-- && p1 && p2) p1 = p1->next,p2 = p2->next; 31 32 ListNode* p3 = head; 33 while(p3->next) p3 = p3->next; 34 35 p3->next = head,p1->next = NULL;//连接旋转链表 36 return p2; 37 } 38 };
标签:step 负数 link nbsp 直接 返回 str return val
原文地址:https://www.cnblogs.com/yuhong1103/p/12530081.html