美文网首页
leetcode-61. 旋转链表

leetcode-61. 旋转链表

作者: sleepforests | 来源:发表于2020-03-25 21:37 被阅读0次

    题目

    https://leetcode-cn.com/problems/rotate-list/

    代码

    思路是先计算长度len 取 kn= k % len 的值 如果等于0 直接返回了

    不等于0的情况下 让快指针先走kn步 然后slow和fast一起 当fast到尾部时 slow即使需要处理的位置。

    /*
     * @lc app=leetcode.cn id=61 lang=java
     *
     * [61] 旋转链表
     */
    
    // @lc code=start
    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode rotateRight(ListNode head, int k) {
          
            int len = 0;
            ListNode p = head;
            while(p!=null){
                len=len+1;
                p=p.next;
            }
            if(len==0){
                return null;
            }
    
            int kn = k%len;
            if(kn==0){
                return head;
            }
    
            ListNode fast=head;
            ListNode slow=head;
    
            for(int i=0;i<kn;i++){
                fast=fast.next; 
            }
            
            while(fast.next!=null){
                fast=fast.next;
                slow=slow.next;
            }
    
            ListNode head2 = slow.next;
            slow.next=null;
            fast.next=head;
    
            return head2;
        }
    }
    // @lc code=end
    
    
    

    相关文章

      网友评论

          本文标题:leetcode-61. 旋转链表

          本文链接:https://www.haomeiwen.com/subject/pfkfuhtx.html