Java 题解 | #牛群旋转#

牛群旋转

https://www.nowcoder.com/practice/5137e606573843e5bf4d8ea0d8ade7f4

本题考察的是链表、指针,看到题目有一个空间想象即可。

代码解释:

  • 创建ListNode类:定义了表示链表节点的类,包含一个整数val和指向下一个节点的指针next。
  • 创建CowMovement类:包含了静态方法moveKPositions,用于实现牛群向右移动K个位置。
  • moveKPositions方法的实现步骤:
  • 如果链表为空或k等于0,直接返回原链表头节点。
  • 计算链表的长度。计算实际需要移动的位置,即将k取模链表长度。
  • 如果不需要移动,直接返回原链表头节点。
  • 使用快慢指针的方法,找到需要断开的位置。
  • 将链表断开并重新连接,形成新的链表。
  • 返回新链表的头节点。
  • getLength方法:用于计算链表的长度,遍历链表并计数。

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param head ListNode类
     * @param k int整型
     * @return ListNode类
     */
    public ListNode rotateLeft (ListNode head, int k) {
        // write code here
        // 如果链表为空或k等于0,直接返回原链表头节点
        if (head == null || k == 0) {
            return head;
        }

        // 计算链表长度
        int length = getLength(head);

        // 计算实际需要移动的位置
        k = k % length;

        // 如果不需要移动,直接返回原链表头节点
        if (k == 0) {
            return head;
        }

        // 找到需要断开的位置
        ListNode slow = head;
        ListNode fast = head;
        while (k > 0) {
            fast = fast.next;
            k--;
        }

        // 移动fast指针到链表末尾,同时移动slow指针
        while (fast.next != null) {
            slow = slow.next;
            fast = fast.next;
        }

        // 将链表断开并重新连接
        ListNode newHead = slow.next;
        slow.next = null;
        fast.next = head;

        return newHead;
    }

    private static int getLength(ListNode head) {
        int length = 0;
        ListNode curr = head;
        while (curr != null) {
            length++;
            curr = curr.next;
        }
        return length;
    }
}

全部评论

相关推荐

运营你豪哥:简历改改吧-非本、求职意向技术岗、无实习经历、内容空洞 如果简历不爆改的话,应该是会持续崩溃了 1.把你教育经历放最下面去 2.蓝底照片很奇怪哈,感觉还在高中时代,建议白底重新拍一下 3.校园经历没啥必要,收集和反馈同学们对产品的意见,解决学生和老师之间的沟通,企业招聘不看这些哈 好好思考一下简历的设计和你要表达的重点,再去投简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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