当前位置:网站首页>leetcode:189. 轮转数组
leetcode:189. 轮转数组
2022-08-03 16:05:00 【OceanStar的学习笔记】
题目来源
题目描述

题目解析
使用临时数组
可以用一个临时数组,先把原数组的值存放到一个临时数组中,然后再把临时数组的值重新赋给原数组,重新赋值的时候要保证每个元素都要后移k位,如果超过数组长度就重头开始

class Solution {
public:
// 1 <= nums.length <= 10^5
void rotate(vector<int>& nums, int k) {
int N = nums.size();
k = k % N;
if(k == 0){
return;
}
std::vector<int> temp(N);
//把原数组值放到一个临时数组中,
for (int i = 0; i < N; i++) {
temp[i] = nums[i];
}
//然后在把临时数组的值重新放到原数组,并且往右移动k位
for (int i = 0; i < N; i++) {
nums[(i + k) % N] = temp[i];
}
}
};
多次反转

class Solution {
public:
// 1 <= nums.length <= 10^5
void rotate(vector<int>& nums, int k) {
int N = nums.size();
k = k % N;
if(k == 0){
return;
}
std::reverse(nums.begin(), nums.end());
std::reverse(nums.begin(), nums.begin() + k);
std::reverse(nums.begin() + k, nums.end());
}
};
连环怼

class Solution {
public:
// 每次把一个元素弄到对应位置去
// 1 <= nums.length <= 10^5
void rotate(vector<int>& nums, int k) {
int N = nums.size();
k = k % N;
int count = 0; // 记录交换位置的次数,n个同学一共需要换n次
for (int start = 0; count < N; ++start) {
int curr = start; // 从0位置开始换位子
int prev = nums[curr];
do{
//下一个坐标
int next = (curr + k) % N;
//交换
int tmp = nums[next];
nums[next] = prev;
prev = tmp;
//更新当前位置
curr = next;
count++;
}while (start != curr); // 循环暂停,回到起始位置,角落无人
}
}
};
边栏推荐
- Leetcode76. Minimal Covering Substring
- 如何选择合适的损失函数,请看......
- 生态剧变,电子签名SaaS模式迎来新突破,网络效应加速到来
- DataGrip数据仓库工具
- Kubernetes 笔记 / 生产环境
- 2021年数据泄露成本报告解读
- 字典表(还需要输入2个字)
- WordPress 5.2.3 更新,升级出现请求超时的解决方法
- How to get the 2 d space prior to ViT?UMA & Hong Kong institute of technology & ali SP - ViT, study for visual Transformer 2 d space prior knowledge!.
- 将 Windows 事件日志错误加载到 SQL 表中
猜你喜欢

How much do you know about the intelligent operation and maintenance service of data warehouse based on DMS?

世界顶级级架构师编写2580页DDD领域驱动设计笔记,属实有牌面

瞌睡检测系统介绍

vector类

MATLAB | 七夕节快到了,还不给朋友安排上这个咕呱小青蛙?

基于DMS的数仓智能运维服务,知多少?

生态剧变,电子签名SaaS模式迎来新突破,网络效应加速到来

甲方不让用开源【监控软件】?大不了我自己写一个

How to get the 2 d space prior to ViT?UMA & Hong Kong institute of technology & ali SP - ViT, study for visual Transformer 2 d space prior knowledge!.

ReentrantLock详解
随机推荐
JD6606SP5_JD6606SSP_JD6606SASP_JD6621W7百盛新纪元授权代理商
Interpretation of the 2021 Cost of Data Breach Report
MySQL性能优化_小表驱动大表
Windows 事件查看器记录到 MYSQL
5 v 8.4 v1A charging current charging management IC
罗克韦尔AB PLC RSLogix5000中创建新项目、任务、程序和例程的具体方法和步骤
Some optional strategies and usage scenarios for PWA application Service Worker caching
unity用代码生成LightProbeGroup
MPLS的wpn实验
When mobile applications go overseas, is your "network optimization" holding back?
Research on power flow in DC microgrid based on Newton's method (Matlab code implementation)
DataGrip:非常好用的数据库工具,安装与使用教程,亮点介绍
【Unity入门计划】基本概念(8)-瓦片地图 TileMap 01
spark入门学习-2
window.open不显示favicon.icon
使用 PowerShell 将 Windows 转发事件导入 SQL Server
Detailed ReentrantLock
土耳其国防部:联合协调中心将对首艘乌克兰粮船进行安全检查
瞌睡检测系统介绍
To participate in sweepstakes, incoming new programmers magazine welfare!