当前位置: 首页 > article >正文

力扣hot100——轮转数组

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

解法思路:

        // 空间换时间:轮转问题看作为平移,轮转就是转一圈,如果拉直这个轮的话,其实就是所有数字向后平移k

        // 建立一个大小为 原数组+k的数组,将原数组中元素,移动k放入

        // 然后将超出原数组部分放到前面空出的部分

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        // 空间换时间:轮转问题看作为平移,轮转就是转一圈,如果拉直这个轮的话,其实就是所有数字向后平移k
        // 建立一个大小为 原数组+k的数组,将原数组中元素,移动k放入
        // 然后将超出原数组部分放到前面空出的部分
        int n = nums.size();
        k %= n;  // 如果 k 大于数组长度,只需考虑 k 对 n 取余的情况
        vector<int> temp_v(n);

        // 将元素平移 k 位
        for (int i = 0; i < n; ++i) {
            temp_v[(i + k) % n] = nums[i];
        }

        // 将结果复制回原数组
        for (int i = 0; i < n; ++i) {
            nums[i] = temp_v[i];
        }
    }
};


http://www.kler.cn/a/555581.html

相关文章:

  • vulfocus/dvwa
  • Linux中使用Docker安装DIFY搭建本地支持库和Agent
  • 16Linux运维网络基础(02网络层次结构)
  • 文心一言大模型的“三级跳”:从收费到免费再到开源,一场AI生态的重构实验
  • Linux上Scapy完全指南:从入门到实战攻防
  • HTML5+CSS多层级ol标签序号样式问题
  • 基于 Java(SpringBoot) +MySQL+ LayUI 开发的物流管理系统
  • 清华大学102页PPT 《deepseek从入门到精通》
  • Java虚拟机(JVM)深度解析
  • 快速入门——SpringBoot 文件上传和拦截器
  • @RestController和@RequestBody注解含义
  • 25届国网计算机考试知识难点及习题整理(持续更新)
  • Nginx 负载均衡实战:构建高效稳定的 Web 服务
  • 低代码表单引擎刷新机制
  • JWT认证机制
  • 音视频入门基础:RTP专题(9)——FFmpeg接收RTP流的原理和内部实现
  • Python 高级特性-迭代
  • 【VUE3】Vue 3 中列表排序:单字段与多字段排序实现方案
  • C#基础:使用Linq进行简单去重处理(DinstinctBy/反射)
  • Vue实战【后端返回ArrayBuffer时,前端如何处理并成功下载ArrayBuffer文件】