首页 > 其他分享 >轮转数组

轮转数组

时间:2023-05-22 23:11:52浏览次数:48  
标签:end nums int newArr start 数组 轮转

轮转数组

简介

image

题解

方法一:
我们可以使用额外的数组来将每个元素放至正确的位置。用 \(n\) 表示数组的长度,我们遍历原数组,将原数组下标为 \(i\) 的元素放至新数组下标为 \((i+k)  mod  n\) 的位置,最后将新数组拷贝至原数组即可。

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        int n = nums.size();
        vector<int> newArr(n);
        for (int i = 0; i < n; ++i) {
            newArr[(i + k) % n] = nums[i];
        }
        nums.assign(newArr.begin(), newArr.end());
    }
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/rotate-array/solutions/551039/xuan-zhuan-shu-zu-by-leetcode-solution-nipk/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

方法二:
image

class Solution {
public:
    void reverse(vector<int>& nums, int start, int end) {
        while (start < end) {
            swap(nums[start], nums[end]);
            start += 1;
            end -= 1;
        }
    }

    void rotate(vector<int>& nums, int k) {
        k %= nums.size();
        reverse(nums, 0, nums.size() - 1);
	//接下来两步为恢复顺序
        reverse(nums, 0, k - 1);
        reverse(nums, k, nums.size() - 1);
    }
};

标签:end,nums,int,newArr,start,数组,轮转
From: https://www.cnblogs.com/parallel-138/p/17422025.html

相关文章

  • 指向对象数组的对象指针
    #include<iostream>usingnamespacestd;classstudent{public:student(intn,floats):num(n),score(s){}voiddisplay(void);private:intnum;floatscore;};voidstudent::display(void){cout<<num<<":"......
  • 数组排序输出(函数模板)
    对于输入的每一批数,按从小到大排序后输出。一行输入为一批数,第一个输入为数据类型(1表示整数,2表示字符型数,3表示有一位小数的浮点数,4表示字符串,0表示输入结束),第二个输入为该批数的数量size(0<size<=10),接下来为size个指定类型的数据。输出将从小到大顺序输出数据。函数接口定义:sor......
  • 找到数组中第几个最小的数据
    找到数组中第几个最小的数据将经典的快速排序算法做简单修改即可示例代码如下:voidtestFindSpecificMin(){intarr[]={2,4,3,9,6,5,7,0,2,1};//intarr[]={4,2,9};//intarr[]={0,1,2,3,4,5,6,7,8};intposition=2;findSpe......
  • 树状数组学习笔记
    树状数组(BinaryIndexedTree)是一种利用数的二进制特征进行检索的树状结构。树状数组是一种奇妙的数据结构,不仅非常高效,而且代码及其简洁。 #definelowbit(x)((x)&-(x))voidadd(intx,intd){//更新while(x<=n){tree[x]+=d;x+=lowbit(x);}}......
  • 【iOS开发】for in 可变数组 崩溃
    该问题来自一道笔试题:一、执行下面代码会发生什么?什么解决?NSMutableArray*array=[NSMutableArrayarrayWithObjects:@"122",@"333",@"444",nil];for(NSString*stringinarray){[arrayremoveObject:string];}答:会崩溃,提示NSGenericExc......
  • 【React工作记录五十九】根据key值过滤形成新得数组
     目录前言导语 核心实现代码运行结果前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语根据key......
  • Python 什么是数组?
    在Python中,数组通常是指用于表示具有相同数据类型的多个元素的数据结构。在Python中,数组可以表示为列表或NumPy数组。列表:Python中最常用的数组表示法是“列表”。一个列表是由一系列有序元素的集合组成,每个元素可以是字符串、数字、布尔值和其他任何类型的对象。例如: ......
  • 【算法题】二维数组打印
    链接:https://www.nowcoder.com/questionTerminal/6fadc1dac83a443c9434f350a5803b51有一个二维数组(n*n),写程序实现从右上角到左下角沿主对角线方向打印。(注:主对角线方向为从左上角指向右下角这一斜线的方向)给定一个二位数组arr及题目中的参数n,请返回结果数组。 数......
  • NOI / 1.8编程基础之多维数组 8:肿瘤面积
    描述在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片中用0表示。其它肿瘤内和肿瘤外的点都用255表示。现在要求你编写一个程序,计算肿瘤内部的像素点的个数(不包括肿瘤边缘上的点)。已知肿瘤的边缘平行于图像的边缘。输入只有一个测试样例。第一行有一......
  • 字符串与字符数组
    字符数组的定义chararray[100];字符串的初始化chararray[100]={'a','b','c','d'};chararrsy[100]="abcd";chararrsy[100]={0};chararrsy[]="abcd";/*字符类型char多个char类型组成的就是字符串字符使用单引号''......