【力扣练习题】热题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 为列表长度),核心操作次数随列表长度线性增长。

相关推荐
wuweijianlove4 小时前
算法性能的渐近与非渐近行为对比的技术4
算法
_dindong4 小时前
cf1091div2 C.Grid Covering(数论)
c++·算法
AI成长日志4 小时前
【Agentic RL】1.1 什么是Agentic RL:从传统RL到智能体学习
人工智能·学习·算法
黎阳之光4 小时前
黎阳之光:视频孪生领跑者,铸就中国数字科技全球竞争力
大数据·人工智能·算法·安全·数字孪生
skywalker_114 小时前
力扣hot100-3(最长连续序列),4(移动零)
数据结构·算法·leetcode
6Hzlia4 小时前
【Hot 100 刷题计划】 LeetCode 17. 电话号码的字母组合 | C++ 回溯算法经典模板
c++·算法·leetcode
wfbcg5 小时前
每日算法练习:LeetCode 209. 长度最小的子数组 ✅
算法·leetcode·职场和发展
_日拱一卒5 小时前
LeetCode:除了自身以外数组的乘积
数据结构·算法·leetcode
计算机安禾5 小时前
【数据结构与算法】第36篇:排序大总结:稳定性、时间复杂度与适用场景
c语言·数据结构·c++·算法·链表·线性回归·visual studio
SatVision炼金士5 小时前
合成孔径雷达干涉测量(InSAR)沉降监测算法体系
算法