码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 之Rotate List(18)

时间:2016-05-19 15:04:19      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

      这题我的第一想法是用头插法,但实际上并不好做,因为每次都需要遍历最后一个。更简单的做法是将其连成环,找到相应的位置重新设头结点和尾结点。这过

有很多细节需要注意,比如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;
      }
View Code

 

leetcode 之Rotate List(18)

标签:

原文地址:http://www.cnblogs.com/573177885qq/p/5508473.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!