zoukankan      html  css  js  c++  java
  • leetcode: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.

    分析:题意为将一个链表向右旋转k位。

    思路:此题同样可以利用双指针,第一个指针从头开始向后移动k位,然后第二个指针指向头指针,接着两个指针一起向后移动直到第一个指针指向尾节点。

    建立第三个辅助指针指向第二个指针的后继结点作为将要返回的新头指针,再把第二个指针的后继设为空指针,同时将第一个指针的后继指向原先的头指针,这样就能完成旋转啦!

    代码:

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
      ListNode *rotateRight(ListNode *head, int k)
    {
      if(head == NULL || k <= 0)
        return head;
      
      ListNode *temp = head;
      int count = 0;
      while(temp != NULL)
      {
        count++;
        temp = temp->next;
      }
      
      if(k > count)
         k = k%count;
      if(k == count || k == 0)
         return head;
      
      ListNode *first = head;
      while(k > 0)
      {
        first = first->next;
        k--;
      }
      
      ListNode *second = head;
      while(first->next != NULL)
      {
        first = first->next;
        second = second->next;
      }
    
      ListNode *newhead = second->next;
      first->next = head;
      second->next = NULL;
      return newhead;
    }
    
    };
    

      

  • 相关阅读:
    【转】揭秘令牌桶
    各空白字符说明
    【转】Python正则表达式指南
    python的urlparse
    【转】HTTP Header 详解
    ElasticSearch(六)底层索引控制
    ElasticeSearch(五)分布式索引架构
    Elasticsearch(四)优化用户体验
    ElasticSearch(三)不仅仅是查询
    ElasticSearch(二) 关于DSL
  • 原文地址:https://www.cnblogs.com/carsonzhu/p/5202082.html
Copyright © 2011-2022 走看看