【力扣练习题】热题100道【哈希】189. 轮转数组

class Solution {

public void rotate(int[] nums, int k) {

int n = nums.length;

// 关键:处理 k >= n 的情况,旋转 n 步相当于没有旋转,取余简化操作

k = k % n;

if (k == 0)

return; // 无需旋转,直接返回

复制代码
    int[] temp = new int[n]; // 只需要一个临时数组,减少冗余

    // 步骤1:将原数组末尾 k 个元素复制到临时数组的前 k 位
    for (int i = 0; i < k; i++) {
        temp[i] = nums[n - k + i]; // 修正索引,获取末尾第 k 个到第 1 个元素
    }

    // 步骤2:将原数组前 n-k 个元素复制到临时数组的后 n-k 位
    for (int i = 0; i < n - k; i++) {
        temp[k + i] = nums[i];
    }

    // 步骤3:将临时数组的内容复制回原始数组(关键:修改原始数组的内容,而非引用)
    System.arraycopy(temp, 0, nums, 0, n);
}

}

两种 Python 实现(常规循环版、切片优化版)的时间复杂度均为 O(n)(n 为列表长度),核心操作次数随列表长度线性增长。

相关推荐
心中有国也有家8 小时前
cann-recipes-infer:昇腾 NPU 推理的“菜谱集合”
经验分享·笔记·学习·算法
绝知此事8 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
碧海银沙音频科技研究院8 小时前
通话AEC与语音识别AEC的软硬回采链路
深度学习·算法·语音识别
csdn_aspnet9 小时前
Python 算法快闪 LeetCode 编号 70 - 爬楼梯
python·算法·leetcode·职场和发展
m0_6294947312 小时前
LeetCode 热题 100-----26.环形链表 II
数据结构·算法·leetcode·链表
壹号用户12 小时前
用队列实现栈
数据结构·算法
做人求其滴12 小时前
面试经典 150 题 380 274
c++·算法·面试·职场和发展·力扣
daad77712 小时前
记一组无人机IMU传感器数据
算法
计算机安禾12 小时前
【c++面向对象编程】第42篇:模板特化与偏特化:为特定类型定制实现
开发语言·c++·算法