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

工作室网站开发郑州做网站msgg

工作室网站开发,郑州做网站msgg,网站制作的市场前景,室内装修设计学习网189. 轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: …

189. 轮转数组

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


示例 1:

输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]


示例 2:

输入: nums = [-1,-100,3,99], k = 2
输出: [3,99,-1,-100]
解释:
向右轮转 1 步: [99,-1,-100,3]
向右轮转 2 步: [3,99,-1,-100]


提示:
  • 1 <= nums.length <= 10⁵
  • -2³¹ <= nums[i] <= 2³¹ - 1
  • 0 <= k <= 10⁵

题解:
思路一
void rotate(int* nums, int numsSize, int k) 
{//空间换时间k = k % numsSize;int newArr[numsSize];//现将nums后面的K个数据按顺序放到newArr中去,再把剩下的数据按顺序插入到新数组中for(int i = 0; i < numsSize; i++){newArr[i] = nums[(numsSize - k + i)%numsSize];}//因为最后需要打印数组nums,所以需要赋值回去for(int i = 0; i < numsSize; i++){nums[i] = newArr[i];}
}

**结果:**不通过,时间复杂度过高,为 O ( N 2 ) O(N^2) O(N2)

思路二
void rotate(int* nums, int numsSize, int k) 
{//空间换时间k = k % numsSize;int newArr[numsSize];//现将nums后面的K个数据按顺序放到newArr中去,再把剩下的数据按顺序插入到新数组中for(int i = 0; i < numsSize; i++){newArr[i] = nums[(numsSize - k + i)%numsSize];}//因为最后需要打印数组nums,所以需要赋值回去for(int i = 0; i < numsSize; i++){nums[i] = newArr[i];}
}
void rotate(int* nums; int numsSize; int k)
{int newArr[numsSize];for(int i = 0; i < numsSize; i++){newArr[(i + k) % numsSize] = nums[i];//将后K个数组放到新数组前面,在把剩下的挪到新数组}for (int i = 0; i < numsSize; ++i) {nums[i] = newArr[i];//因为最后需要打印数组nums,所以需要赋值回去}
}

以上两组代码的代码逻辑基本一致,主要是在将数据移动到新数组时的具体实现思路不同。

//法一
k = k % numsSize;
newArr[i] = nums[(numsSize - k + i)%numsSize];//法二
newArr[(i + k) % numsSize] = nums[i];
思路三
/*
函数功能:实现一段数据的逆置
参数:nums:数组名begin:逆置数据的起始下标end:逆置数据的结束下标
返回值:无
*/
void reverse(int* nums,int begin,int end)
{while(begin<end){int tmp = nums[begin];nums[begin] = nums[end];nums[end] = tmp;begin++;end--;}
}void rotate(int* nums, int numsSize, int k)
{//防止逆置时发生数组越界k = k%numsSize;//前n-k个数据逆置reverse(nums,0,numsSize-k-1);//后k个数据逆置reverse(nums,numsSize-k,numsSize-1);//整体逆置reverse(nums,0,numsSize-1);
}

时间复杂度: O ( N ) O(N) O(N)

空间复杂度: O ( 1 ) O(1) O(1)

方法:

  • 前n - k个逆置:4 3 2 1 5 6 7
  • 后k个逆置:4 3 2 1 7 6 5
  • 整体逆置:5 6 7 1 2 3 4

文章转载自:

http://7VWtvYSI.hLyfn.cn
http://hXxkmgt0.hLyfn.cn
http://kyrk3r4f.hLyfn.cn
http://tDooa55a.hLyfn.cn
http://tu2zENFz.hLyfn.cn
http://HuYvMhoo.hLyfn.cn
http://ugY6euif.hLyfn.cn
http://Vj5QwjsL.hLyfn.cn
http://ygyhMMYX.hLyfn.cn
http://48Cp5NKK.hLyfn.cn
http://OjS6jzxJ.hLyfn.cn
http://CZ3Qp4ql.hLyfn.cn
http://mhJwOP7E.hLyfn.cn
http://XSNY19lT.hLyfn.cn
http://9lPOLDUx.hLyfn.cn
http://OPmD4Kkn.hLyfn.cn
http://EcXiBJSU.hLyfn.cn
http://Pfq1KuIy.hLyfn.cn
http://zrs653CF.hLyfn.cn
http://5USJUGNT.hLyfn.cn
http://ReNMG7nV.hLyfn.cn
http://3LZyd8Gt.hLyfn.cn
http://H3MuTgB8.hLyfn.cn
http://9DfpiWrT.hLyfn.cn
http://X5vvbzKW.hLyfn.cn
http://u5WSHiau.hLyfn.cn
http://72WRj2PK.hLyfn.cn
http://7h7a3qqy.hLyfn.cn
http://xpiYBPk2.hLyfn.cn
http://1V1QVNhR.hLyfn.cn
http://www.dtcms.com/wzjs/715479.html

相关文章:

  • 苏州网站定制公司店铺营业执照在哪个网站做年审
  • 南昌免费网站建站模板广州市海珠区建设局五位一体网站
  • 网站策划报告书怎么做wordpress编辑器图片
  • 宁乡建设局网站做一个网站能卖多少钱
  • 汝阳县建设局网站织梦5.5模版安装上去为什么打开网站图片不能显示教程
  • 建设网站多钱p2p做网站
  • 手机企业网站源码wordpress 多站点主题
  • 网站建设价格差异好大中铁建设集团董事长
  • 建网站自学.net做网站c#
  • mooc网站开发流程图镇江网站建设制作方案
  • 旅游电子商务网站设计wordpress 添加文章格式
  • 网站建设与维护岗位职责美食网站首页模板
  • 北京网站seo策划网站建设好了怎么发布
  • 网站查询ip地址查询松江集团网站建设
  • 平乡网站建设重庆网站设计排名
  • 南昌那个公司做网站好做微网站用什么框架
  • 购物网站的搜索框用代码怎么做用在线网站做的简历可以吗
  • 做一家视频网站吗个体工商户在线注册
  • 二手商城网站建设论文思勤传媒网站建设公司
  • 建设电子商务网站的花费项目计划书怎么写
  • 建立网站的费用平面设计素材网
  • 哪里做网站最便宜宁波淘宝网站建设
  • 网站源代码制作百度视频下载
  • 刷会员网站怎么做程序界面设计
  • 手机网站 微信小程序网页设计报价表
  • 招远住房和规划建设管理局网站搜索引擎排名优化是什么意思
  • 南京网站建设 小程序推广文案类型
  • 潮州网站网站建设资质做网站需要用到什么
  • 易网做的网站后台域名注册流程及费用
  • 网站怎么提升百度收入什么网站做任务能挣