zoukankan      html  css  js  c++  java
  • 19.2.9 [LeetCode 61] Rotate List

    Given a linked list, rotate the list to the right by k places, where k is non-negative.

    Example 1:

    Input: 1->2->3->4->5->NULL, k = 2
    Output: 4->5->1->2->3->NULL
    Explanation:
    rotate 1 steps to the right: 5->1->2->3->4->NULL
    rotate 2 steps to the right: 4->5->1->2->3->NULL
    

    Example 2:

    Input: 0->1->2->NULL, k = 4
    Output: 2->0->1->NULL
    Explanation:
    rotate 1 steps to the right: 2->0->1->NULL
    rotate 2 steps to the right: 1->2->0->NULL
    rotate 3 steps to the right: 0->1->2->NULL
    rotate 4 steps to the right: 2->0->1->NULL

    题意

    把链表循环右移k个

    题解

     1 class Solution {
     2 public:
     3     ListNode* rotateRight(ListNode* head, int k) {
     4         if (head == NULL)return NULL;
     5         ListNode*pre, *p = head;
     6         int cnt = 0;
     7         while (p != NULL) {
     8             p = p->next;
     9             cnt++;
    10         }
    11         k %= cnt;
    12         if (k == 0)return head;
    13         p = head;
    14         while (k--)
    15             p = p->next;
    16         pre = head;
    17         while (p->next != NULL) {
    18             p = p->next;
    19             pre = pre->next;
    20         }
    21         ListNode*ans = pre->next;
    22         pre->next = NULL;
    23         p->next = head;
    24         return ans;
    25     }
    26 };
    View Code

    考虑空链和不移动的特殊情况

  • 相关阅读:
    MongoDB笔记
    mysql笔记
    08-下载中间件
    ubuntu1804安装pycharm2018.3.x
    02-CSS基础
    14-eval 函数
    13-文件
    12-模块和包
    11-异常
    有关dir和 unittest
  • 原文地址:https://www.cnblogs.com/yalphait/p/10357610.html
Copyright © 2011-2022 走看看