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

    题意描述很模糊,经过多次失败的尝试,总算明白大概是啥意思了……

    /**
     * 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)return NULL;
            k = k%listlength(head);
            if(k == 0||k>=listlength(head))return head;
            ListNode *s1 = head,*s2 = head,*temp = head;
            for(int i = 0 ; i < k-1;i++)
            {
                if(s1->next == NULL)return head;
                s1 = s1 -> next;
            }
            while(s1 -> next != NULL)
            {
                s1 = s1 -> next; 
                temp = s2;
                s2 = s2 -> next;
            }
            s1->next =head;
            head = s2;
            temp->next = NULL;
            return head;
        }
        int listlength(ListNode *head)
        {
            int i = 0;
            ListNode *temp = head;
            while(temp !=NULL)
            {
                i++;
                temp = temp ->next;            
            }
            return i;
        }
    };
    

      

  • 相关阅读:
    CentOS配置sshd
    求逆元 HDU 2516
    求逆元
    二分图的最大匹配
    博弈1
    几何多边形面积交模板
    LAMP服务器的搭建
    扩展欧几里得
    cf780c
    利用栈的逆波兰表达式
  • 原文地址:https://www.cnblogs.com/pengyu2003/p/3595664.html
Copyright © 2011-2022 走看看