当前位置:网站首页>leetcode每日一练:旋转数组
leetcode每日一练:旋转数组
2022-07-05 17:17:00 【利刃Cc】

链接: 旋转数组
要求我们转一次,就是把最后面的数移到最前面来,然后其他数字保持顺序往后移动一步。
常规思路: 就是用while循环,题目要求我们轮转n次,我们就将后n个数字分别移到最前面去。这种思路虽然行得通,但是仔细想,每次将前面的数字向后移,这个时间复杂度是不低的,所以我们这里不讲这种常规思路。
新思路: 题目要我们轮转数组,其实我们可以先将整个数组翻转顺序,然后再将前n - 1个数翻转顺序,最后将后numsSize - n个数翻转顺序(假设这里数组个数为numsSize个),其实就完成了数组轮转。
注:这里有一个关键的点,就是如果翻转n次,而n等于数组的长度numsSize的话,其实就是原数组不动,以此类推,所以我们可以对n进行一下处理。
而且这种思路的空间复杂度是O(1)的!
代码:
void partRotate(int* a, int left, int right)
{
//使用左右指针的方法
while(left < right)
{
int tmp = a[left];
a[left] = a[right];
a[right] = tmp;
left++;
right--;
}
}
void rotate(int* nums, int numsSize, int k){
k %= numsSize;
//若k模完长度为0,则无需轮转
if(k == 0)
return;
partRotate(nums, 0, numsSize - 1);//先翻转整个数组
partRotate(nums, 0, k - 1);//然后翻转前k - 1个
partRotate(nums, k, numsSize - 1);//最后翻转后numsSize - k个
}

边栏推荐
- Disabling and enabling inspections pycharm
- goto Statement
- 网络威胁分析师应该具备的十种能力
- SQL Server(2)
- 33:第三章:开发通行证服务:16:使用Redis缓存用户信息;(以减轻数据库的压力)
- Cartoon: how to multiply large integers? (next)
- Alpha conversion from gamma space to linner space under URP (II) -- multi alpha map superposition
- MySQL之知识点(六)
- Oracle Recovery Tools ----oracle数据库恢复利器
- 这个17岁的黑客天才,破解了第一代iPhone!
猜你喜欢
Oracle缩表空间的完整解决实例

求解为啥all(())是True, 而any(())是FALSE?

URP下Alpha从Gamma空间到Linner空间转换(二)——多Alpha贴图叠加

IDEA 项目启动报错 Shorten the command line via JAR manifest or via a classpath file and rerun.

C # mixed graphics and text, written to the database in binary mode

c#图文混合,以二进制方式写入数据库

云主机oracle异常恢复----惜分飞

Design of electronic clock based on 51 single chip microcomputer

ICML 2022 | Meta propose une méthode robuste d'optimisation bayésienne Multi - objectifs pour faire face efficacement au bruit d'entrée

CVPR 2022 best student paper: single image estimation object pose estimation in 3D space
随机推荐
7. Scala class
基于51单片机的电子时钟设计
ICML 2022 | Meta提出魯棒的多目標貝葉斯優化方法,有效應對輸入噪聲
SQL Server(2)
Tita performance treasure: how to prepare for the mid year examination?
mysql5.6解析JSON字符串方式(支持复杂的嵌套格式)
云安全日报220705:红帽PHP解释器发现执行任意代码漏洞,需要尽快升级
域名解析,反向域名解析nbtstat
The five most difficult programming languages in the world
蚂蚁金服的暴富还未开始,Zoom的神话却仍在继续!
How MySQL uses JSON_ Extract() takes JSON value
Cartoon: how to multiply large integers? (I) revised version
Cartoon: interesting [pirate] question
漫画:有趣的海盗问题 (完整版)
深入理解Redis内存淘汰策略
Learn about MySQL transaction isolation level
如何修改mysql字段为自增长字段
The comprehensive competitiveness of Huawei cloud native containers ranks first in China!
MySQL之知识点(七)
Cmake tutorial step6 (add custom commands and generate files)