zoukankan      html  css  js  c++  java
  • [LeetCode61]Rotate List

    题目:

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

    For example:
    Given 1->2->3->4->5->NULL and k = 2,
    return 4->5->1->2->3->NULL.

    分类:LinkedList   TwoPointers

    代码:关键构造一个环再从相应位置断开

     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 public:
    11     ListNode* rotateRight(ListNode* head, int k) {
    12         if(!head)
    13             return head;
    14         int length = 1;
    15         ListNode *newHead, *tail;
    16         newHead = tail = head;
    17         //得到结点数
    18         while(tail->next)
    19         {
    20             tail = tail->next;
    21             length++;
    22         }
    23         //构造一个换
    24         tail->next = head;
    25         
    26         if(k %= length)
    27         {
    28             for(int i = 0; i < length - k; ++i)
    29                 tail = tail->next;
    30         }
    31         newHead = tail->next;
    32         tail->next = NULL;
    33         return newHead;
    34     }
    35 };
  • 相关阅读:
    每周总结
    5月2日学习日志
    5月1日学习日志
    4月30日学习日志
    4月29日学习日志
    4月28日学习日志
    4月27日学习日志
    每周总结
    vue滚动插件BetterScroll
    vue 获取页面高度
  • 原文地址:https://www.cnblogs.com/zhangbaochong/p/5469137.html
Copyright © 2011-2022 走看看