旋转的数组

分享今天看到的一个题目,不同思路解法

题目 

                      

 思路1:时间复杂度0(N*k)

void rotate(int *a,int N,int k)//N为数组元素个数

{

       while(k--)

       {         

                int tem=a[N-1];

                for(int right=N-2;right>=0;right--)

                {

                a[right+1]=a[right];

                }

                a[0]=tem;

        }

 思路2(开辟一块空间):时间复杂度0(N)        空间复杂度o(N)

void rotate(int *a,int N,int k,int *b)//数组b        int b[sz]={0};

{

        for(int i=0;i<k;i++)

        {

                b[i]=a[N-i-1];

        }

        for(int =k;i<N;i++)

        {

                b[i]=a[N-i-1];

        }

}

 思路三单独逆置后整体逆置:

void Rt(int *a,int left,int right)//对区间[left:right]内的元素进行内置

{

        while(left<=right)

        {

                int tem=a[left];

                a[left]=a[right];

                a[right]=tem;

                ++left;

                --right;

        }

}

void rotate(int *a,int N;int k)

{

        Rt(a,N-k,N-1);//先逆序数组a的后k个       1 2 3 4 7 6 5

        Rt(a,0,N-k-1);//再逆序数组a前N-k个        4 3 2 1 7 6 5

        Rt(a,0,N);//最后逆序整个数组a                5 6 7 1 2 3 4

左后对上面代码进行分析,上述是以N=7,k=3的情况(k<N)。那么如果k>N怎么办N-k不是变成负数了吗?上述代码就显然不成立了。

但是我们可以发现当k=N时数组没有变化,所以可以看成逆序每N次一个循环,所以只要在主函数对函数rotate函数进行传参是传入k%Nj就能使上述代码依然成立了。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/212680.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 基础【四】--数据类型-字符串【2023.11.23】

1 .定义 字符串是 Python 的一种数据类型&#xff0c;它可以通过单引号 ‘、双引号 "、三引号 ‘’’ 或 “”"来定义。 aabcd bacsdcd c"""accsfv""" print(a) print(b) print(c)2 .基本操作 访问单个字符 注意&#xff1a;从0开始…

009 OpenCV 二值化 threshold

一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、二值化算法 2.1、概述 在机器视觉应用中&#xff0c;OpenCV的二值化函数threshold具有不可忽视的作用。主要的功能是将一幅灰度图进行二值化处理&#xff0c;以此大幅降低图像的数…

腾讯云标准型S5服务器和s6有什么区别?性能哪个强?

腾讯云服务器CVM标准型S5和S6有什么区别&#xff1f;都是标准型云服务器&#xff0c;标准型S5是次新一代云服务器规格&#xff0c;标准型S6是最新一代的云服务器&#xff0c;S6实例的CPU处理器主频性能要高于S5实例&#xff0c;同CPU内存配置下的标准型S6实例要比S5实例性能更好…

设置定时自动请求测试_自动定时循环发送http_post请求---postman工作笔记001

其实就是创建接口文件夹的时候,有个monitor collection 用来监听接口执行情况,这里就可以设置 可以看到多久执行一次对吧,这里可以设置每几分钟执行一次,一共执行多少次等等 但是这里要说明一下,如果需要使用monitor功能,必须需要登录, 所以如果这里点击monitor collection…

Java架构师发展方向和历程

目录 1 导论2 架构师的三观培养3 架构师的遇到的困难4 架构师职责5 架构师之路6 架构师的发展方向7 应用领域架构师8 业务架构师9 系统架构师和企业架构师10 技术路线和演进规划11 一线大厂的技术生态拓张案例12 如何推进项目落地想学习架构师构建流程请跳转:Java架构师系统架…

细胞级浮游藻类智能检测系统

产品信息 新一代浮游藻类智能检测系统问世&#xff01;英视江河首次将藻类检测精度提升到细胞级&#xff01;英视江河致力于新一代浮游生物的识别、计数。特征是群体藻类和群体种个体均精准检测&#xff01;目前设备已在山东、宁夏、内蒙多地实际应用。 郑州英视江河生态环境科…

技术短视频账号矩阵seo系统--源头开发---saas工具

专注短视频账号矩阵系统源头开发---saas营销化工具&#xff0c;目前我们作为一家纯技术开发团队目前已经专注打磨开发这套系统企业版/线下版两个版本的saas营销拓客工具已经3年了&#xff0c;本套系统逻辑主要是从ai智能批量剪辑、账号矩阵全托管发布、私信触单收录、文案ai智能…

ubuntu20.04安装多版本cuda,切换版本

1. 安装cuda toolkit: 下载网站 https://developer.nvidia.com/cuda-11.3.0-download-archive 选择版本&#xff0c;这里选择11.3 wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run给cuda权限: chmod x…

【Docker】从零开始:9.Docker命令:Push推送仓库(Docker Hub,阿里云)

【Docker】从零开始&#xff1a;9.Docker命令:Push推送仓库 知识点1.Docker Push有什么作用&#xff1f;2.Docker仓库有哪几种2.1 公有仓库2.2 第三方仓库2.3 私有仓库2.4 搭建私有仓库的方法有哪几种 3.Docker公有仓库与私有仓库的优缺点对比 Docker Push 命令标准语法操作参数…

浅谈 Guava 中的 ImmutableMap.of 方法的坑

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐&…

40、Flink 的Apache Kafka connector(kafka source 和sink 说明及使用示例) 完整版

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

Python中match-case语法: 引领新的模式匹配时代

更多Python学习内容&#xff1a;ipengtao.com Python在其最新的版本中引入了match-case语法&#xff0c;这是一项强大的功能&#xff0c;为开发者提供了更加灵活和直观的模式匹配方式。本文将深入探讨match-case的各个方面&#xff0c;并通过丰富的示例代码&#xff0c;帮助大家…