zoukankan      html  css  js  c++  java
  • Leetcode#61 Rotate List

    原题地址

    我一直不太理解为什么叫rotate,翻译成"旋转"吧,似乎也不像啊。比如:

    1->2->3->4->5->NULL

    向右旋转2的距离,变成了:

    4->5->1->2->3->NULL

    后来琢磨半天+跟人讨论,似乎可以这么理解"rotate"

    1. 循环shift。这个比较容易理解。

    2. 环旋转。意思是把list首尾连接成一个环进行旋转。想象有一桌菜,你坐在桌边,原先list头部的那盘菜现在就在你眼前,你可以伸手去转桌上的转盘。比如:

    然后,你把桌上的菜向右转了两个单位,变成这样:

    最后,你沿着顺时针方向依次吃完了整桌菜,你吃菜的顺序是什么?4->5->1->2->3->NULL,哇,正式我们想要的结果。

    代码:

     1 ListNode *rotateRight(ListNode *head, int k) {
     2   if (!head) return head;
     3         
     4   int n = 1;
     5   ListNode *h = head;
     6         
     7   while (h->next) {
     8     h = h->next;
     9     n++;
    10   }
    11   h->next = head;
    12         
    13   n = n - (k % n);
    14   while (n--) {
    15     head = head->next;
    16     h = h->next;
    17   }
    18   h->next = NULL;
    19         
    20   return head;
    21 }
  • 相关阅读:
    Hive-基本操作
    Hive-安装
    Hive-概述
    游荡二十几天的感想
    js html css
    C#笔试总结
    ubuntu16.04 下 C# mono开发环境搭建
    scoket、TCP、UDP、WebService选型
    虚拟机安装Windows系统,再安装orcale
    Rosetta Stone 不在C盘安装步骤
  • 原文地址:https://www.cnblogs.com/boring09/p/4253664.html
Copyright © 2011-2022 走看看