当前位置:网站首页>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); // 循环暂停,回到起始位置,角落无人
}
}
};
边栏推荐
- 一个文件管理系统的软硬件配置清单
- 详谈RDMA技术原理和三种实现方式
- mysql delete 执行报错:You can‘t specify target table ‘doctor_info‘ for update in FROM clause
- STM32的HAL和LL库区别和性能对比
- 【Unity入门计划】制作RubyAdventure01-玩家的创建&移动
- AI也有健忘症?英国41岁教授专访:解决灾难性遗忘
- To participate in sweepstakes, incoming new programmers magazine welfare!
- 【Unity入门计划】基本概念(8)-瓦片地图 TileMap 01
- 【Unity入门计划】基本概念(7)-Input Manager&Input类
- Go Go 简单的很,标准库之 fmt 包的一键入门
猜你喜欢
随机推荐
To add digital wings to education, NetEase Yunxin released the overall solution of "Internet + Education"
一文看懂推荐系统:召回01:基于物品的协同过滤(ItemCF),item-based Collaboration Filter的核心思想与推荐过程
How much do you know about the intelligent operation and maintenance service of data warehouse based on DMS?
常见分布式理论(CAP、BASE)和一致性协议(Gosssip、Raft)
QT QT 】 【 to have developed a good program for packaging into a dynamic library
leetcode-268.丢失的数字
WordPress建站技术笔记
To participate in sweepstakes, incoming new programmers magazine welfare!
基于DMS的数仓智能运维服务,知多少?
瞌睡检测系统介绍
使用 PowerShell 将 Windows 转发事件导入 SQL Server
【Unity入门计划】基本概念(8)-瓦片地图 TileMap 01
[Unity Getting Started Plan] Basic Concepts (8) - Tile Map TileMap 02
"Avnet Embedded Weekly" Issue 276: 2022.07.25--2022.07.31
83. Remove Duplicates from Sorted List
技术干货|如何将 Pulsar 数据快速且无缝接入 Apache Doris
Small Tools(4) 整合Seata1.5.2分布式事务
【Unity入门计划】制作RubyAdventure01-玩家的创建&移动
从零开始搭建MySQL主从复制架构
将 Windows 事件日志错误加载到 SQL 表中