leetcode 之Rotate List(18)
Posted 牧马人夏峥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 之Rotate List(18)相关的知识,希望对你有一定的参考价值。
这题我的第一想法是用头插法,但实际上并不好做,因为每次都需要遍历最后一个。更简单的做法是将其连成环,找到相应的位置重新设头结点和尾结点。这过
有很多细节需要注意,比如K有可能是大于链表长度的,如何重新设置K等都要注意。
ListNode *rotateList(ListNode *head, int k) { if (head == nullptr || k == 0)return head; ListNode *p = head; int n = 1; while (p->next) { n++; p = p->next; } k =n - k%n;//k有可能大于n p->next = head; for (int i = 0; i < k; i++) p = p->next; head = p->next; p->next = nullptr; return head; }
以上是关于leetcode 之Rotate List(18)的主要内容,如果未能解决你的问题,请参考以下文章