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

【C++】每日一练(轮转数组)

 

本篇博客给大家带来的是用C++语言来解答轮转数组!

🐟🐟文章专栏:每日一练

🚀🚀若有问题评论区下讨论,我会及时回答

❤❤欢迎大家点赞、收藏、分享!

今日思想:不服输的少年啊,请你再努力一下!

题目描述:

方法1: 三次逆置

思路:下图这种思路不是一般人能想出来的,大家知道就行。

代码实例:

#define _CRT_SECURE_NO_WARNINGS 1
void reverse(int* nums, int left,int right)
{
    while ((left < right)
    {
        int  tmp = nums[left];
        nums[left] = nums[right];
        nums[right] = tmp;

        left++;
        right--;
    }
}
void rotate(int* nums, int numsSize, int k) {
    k = k % numsSize;//防止k>numsSize
    //前numsSize-k个数据逆置
    reverse(nums, 0, numsSize - k - 1);//第一次逆置
    //后k个数据逆置
    reverse(nums, numsSize - k, numsSize - 1);//第二次逆置
    //整体逆置
    reverse(nums, 0, numsSize - 1);
}

方法2:创建新数组 

思路:先创建新数组,然后把轮转k次的数组放到临时数组中去,最后再放回去。

代码实例:

void rotate(int* nums, int numsSize, int k) {
    //创建新数组
    int newArr[numsSize];
    //向右轮转k次并保存在临时数组中
    for(int i=0;i<numsSize;i++)
    {
        newArr[(i+k)%numsSize]=nums[i];
    }
    //把临时数组的值放回去
    for(int i=0;i<numsSize;i++)
    {
        nums[i]=newArr[i];
    }
}

完!

http://www.dtcms.com/a/71124.html

相关文章:

  • SSL/TLS 1.2过程:Client端如何验证服务端证书?
  • CentOS 8 停止维护后通过 rpm 包手动安装 docker
  • MIDI,AI 3D场景生成技术
  • Java中的访问修饰符有哪些
  • word处理控件Aspose.Words教程:使用 Python 删除 Word 中的空白页
  • 机器学习与深度学习中模型训练时常用的四种正则化技术L1,L2,L21,ElasticNet
  • C++语言的动态规划
  • C++基础 [三] - 面向对象三
  • MySQL自动化配置工具开发
  • 电子电气架构 --- 分布到集中的动カ系统及基于域控制器的架构
  • node-ddk,electron 开发组件
  • CSS元素层叠顺序规则
  • 读 Gemma 3 二分
  • 异步加载错误如何解决
  • AI驱动的视频字幕提取与翻译工具
  • 【Celeborn】如何利用Ratis实现集群High Available(HA)
  • 单例模式 (Singleton Pattern)
  • redis配置文件
  • 【Linux】进程(1)进程概念和进程状态
  • JVM常用概念之超态虚拟调用
  • 75.HarmonyOS NEXT ImageItemView组件深度剖析:手势交互与动画实现(二)
  • 人工智能治理的两会声音:技术规范与伦理风险探讨
  • WPS 搭配 Zotero 插件使用
  • Spark 中的窗口函数
  • c#知识点补充
  • TensorFlow 与 TensorFlow Lite:核心解析与层应用
  • [数据结构]排序之 直接选择排序
  • 【RTSP】客户端(五)H264 265处理逻辑
  • AI绘画笔记--基础知识
  • LeetCode 每日一题 2025/3/10-2025/3/16