You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数组元素向左移位3位?Java循环移位功能实现问询

实现Java数组左循环移位功能

没问题,我来帮你搞定这个数组左循环移位的功能!针对你的需求,我给你两种常用的实现方案,还会指出你现有代码里的小细节问题。

方案一:创建新数组(直观易理解)

这种方法通过创建新数组,把原数组的元素按移位规则重新排列,逻辑简单清晰,适合入门理解:

public static double[] rotate(double[] arr, int k) {
    // 处理边界情况:数组为空/长度为1,或移位位数≤0,直接返回原数组
    if (arr == null || arr.length <= 1 || k <= 0) {
        return arr;
    }
    int n = arr.length;
    // 处理移位位数大于数组长度的情况,取模减少不必要的移位次数
    k = k % n;
    
    double[] result = new double[n];
    // 把原数组从第k位开始的元素复制到新数组开头
    System.arraycopy(arr, k, result, 0, n - k);
    // 把原数组前k个元素复制到新数组末尾
    System.arraycopy(arr, 0, result, n - k, k);
    
    return result;
}

思路说明

  • 用System.arraycopy做元素复制比手动循环效率更高,这是Java提供的原生高效复制方法
  • 先处理边界情况,避免无意义的计算(比如移位0位或者数组长度为1时,不需要任何操作)
  • 当移位位数k大于数组长度时,取模k % n,比如数组长度9,移位12位其实等价于移位3位

方案二:原地反转法(空间更高效)

如果想要节省内存(不需要额外创建数组),可以使用三次反转法,空间复杂度为O(1),适合处理大数组:

public static double[] rotate(double[] arr, int k) {
    if (arr == null || arr.length <= 1 || k <= 0) {
        return arr;
    }
    int n = arr.length;
    k = k % n;
    
    // 1. 反转前k个元素
    reverse(arr, 0, k - 1);
    // 2. 反转后面n-k个元素
    reverse(arr, k, n - 1);
    // 3. 反转整个数组
    reverse(arr, 0, n - 1);
    
    return arr;
}

// 辅助方法:反转数组中[start, end]区间的元素
private static void reverse(double[] arr, int start, int end) {
    while (start < end) {
        // 交换首尾元素
        double temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;
        start++;
        end--;
    }
}

思路说明

左循环移位k位的本质可以通过三次反转实现:
比如原数组[38,44,15,11,27,19,8,12,10],移位3位:

  1. 反转前3个元素:[15,44,38,11,27,19,8,12,10]
  2. 反转后面6个元素:[15,44,38,10,12,8,19,27,11]
  3. 反转整个数组:[11,27,19,8,12,10,15,44,38],这就是左移3位后的结果

注意你的现有代码小问题

你原代码中打印移位后数组的循环条件是i < x.length-3,这会导致最后3个元素(也就是原来的前3个元素)无法被打印,应该改成i < x.length才能看到完整的移位结果:

System.out.println("After rotation: ==============================");
for (int i = 0; i < x.length; i++) { // 这里去掉-3
    System.out.println("x[" + i + "]: " + x[i]);
}

内容的提问来源于stack exchange,提问作者user11036260

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:31:35