• leetcode 61. Rotate List


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

    • 定义两个指针,分布指向 list 的头结点和尾结点,
    • 将头结点插到尾部

    代码:

    class Solution {
    public:
        ListNode* rotateRight(ListNode* head, int k) {
            ListNode *h1=head;
            ListNode *h2=head;
            if(k==0||head==NULL)
                return h1;
            int l=1;
            
            while(h1&&h1->next)
            {
                h1=h1->next;
                l++;
            }
          //  if(l>1)
            int c=l-k%l;
           // cout<<h1->val<<endl;
           //  cout<<l<<endl;
           //   cout<<c<<endl;
          if(l==1)
              return head;
            for(int i=0;i<c;i++)
            {
                ListNode *t=h2;
                 h2=h2->next;
                cout<<h2->val<<endl;
                cout<<t->val<<endl;
                h1->next=t;
               h1=t;
                t->next=NULL;
            }
            return h2;
        }
    };
    

      

  • 相关阅读:
    【程序2】
    【程序1】
    基数排序
    归并排序
    选择排序
    leetcode15
    leetcode221
    leetcode322
    leetcode921
    leetcode922
  • 原文地址:https://www.cnblogs.com/fanhaha/p/7347132.html
Copyright © 2020-2023  润新知