Java 题解 | #向左移动牛群#

向左移动牛群

https://www.nowcoder.com/practice/e70fc604c3684ce294e6af5e97feff04

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @param k int整型
     * @return int整型一维数组
     */
    public int[] rotateCows (int[] nums, int k) {
        // write code here

        int len = nums.length;
        k = k % len; // 处理 k 值大于数组长度的情况

        reverse(nums, 0, len - 1); // 将整个数组进行反转
        reverse(nums, 0, k - 1); // 将前 k 个元素进行反转
        reverse(nums, k, len - 1); // 将剩余的元素进行反转

        return nums;
    }

    private void reverse(int[] arr, int start, int end) {
        while (start < end) {
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
            start++;
            end--;
        }
    }
}

该代码使用的编程语言是Java。

这道题考察的知识点包括数组(或列表)的旋转和反转操作。

代码的文字解释如下:

  1. rotate_cows(nums, k) 函数接受一个整数列表 nums 和一个整数 k 作为参数,并返回一个整数列表。
  2. 对 k 进行取模运算,以处理可能出现的 k 值大于列表长度的情况,确保旋转的步数不超过列表长度。
  3. 通过三次反转操作实现列表的旋转:第一次反转:将整个列表进行反转。第二次反转:将前 k 个元素进行反转。第三次反转:将剩余的元素进行反转。
  4. 返回旋转后的列表作为结果。

辅助函数 reverse(arr, start, end) 用于反转列表中指定区间的元素。具体操作是通过交换起始位置和结束位置上的元素进行反转。

全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 11:21
点赞 评论 收藏
分享
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-04 15:20
牛客61197583...:看到室友一个个没怎么学通过关系直接入职或者接到面试,真的很难受。八股不知道背了多少遍,hot100也刷了1.5遍了,但就是没有面试的机会,唉
点赞 评论 收藏
分享
来个大佬救一下,为上投了都是石沉大海了,没实习经历的话怕秋招直接进不了面。什么实习这么难找,基本
心态爆炸了:现在正式的岗位都少,实习基本不咋招的,除了大厂,中小企业其实没那么多岗位需求,就算是有,大多都是招一两个廉价劳动力,同时,他们也会希望你一来就能干活的,没时间培训你,就让你了解公司的项目,你了解完就可以开始干活。再者是,很多低质量的实习其实用处没有那么大的。我去年也是找实习找到破防,最后去了一家深圳的小公司实习,工作对我来说很简单,甚至不如我在学校做的项目,秋招的时候,这段实习经历也并没有帮上什么忙,投递简历,依旧非常低的回复率。低回复率是常态,尤其是找实习,找不到,那就把重心放在优化自己的简历和项目,多看八股文,锻炼自己的面试能力,多看别人的面经,自己模拟面试,等秋招的时候,只要有那么寥寥几次,好好抓住那几次机会。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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