题解 | #牛群旋转#

更多关于**算法题解、软件开发面经、机器学习算法面经、各企业面试问题记录**,关注**Fintech砖**,持续更新中。https://www.nowcoder.com/users/873777317

企业面试记录专栏https://www.nowcoder.com/creation/manager/columnDetail/0YBWnm

机器学习面经专栏https://www.nowcoder.com/creation/manager/columnDetail/j8nNy0

软件开发面经专栏https://www.nowcoder.com/creation/manager/columnDetail/0aXKaM

【1】题目考察的知识点:链表、快慢指针

【2】题目解答方法的文字分析

  1. 定义快慢指针
  2. 模拟思路进行编码: 2.1计算链表长度,获得移动步数 2.2快指针先移动对应步数 2.3快慢指针一起移动,快指针到达结尾,慢指针下一个到达分割点 2.4进行链表拆解和组合 3 合并链表,返回结果

【3】本题解析所用的编程语言:java

【4】完整且正确的编程代码

  public ListNode rotateLeft (ListNode head, int k) {
        // 模拟思路
        //计算链表长度,获取移动步数
        int len=0;
        ListNode temp=head;
        while(temp!=null){
            len++;
            temp=temp.next;
        }
        int step=k%len;
        //定义快慢指针,快指针先移动step步,m
        ListNode slow=head;
        ListNode fast=head;
        for(int i=step;i>0;i--){
            fast=fast.next;
        }
        //快慢指针一起移动,其中,慢指针的下一步为切分点
        while(fast.next!=null){
            fast=fast.next;
            slow=slow.next;
        }
        ListNode ret=slow.next;
        slow.next=null;
        fast.next=head;
        return ret;
    }
#晒一晒我的offer##如何判断面试是否凉了##软件开发薪资爆料##我的实习求职记录##实习,投递多份简历没人回复怎么办#
编程算法题详解集锦 文章被收录于专栏

牛客top101+牛客top202+leetcode热题

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务