首页 > 其他分享 >189. 旋转数组

189. 旋转数组

时间:2023-06-25 17:24:11浏览次数:53  
标签:begin 轮转 nums int 旋转 数组 189 size

给定一个整数数组 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]

本题思路一致 https://www.cnblogs.com/lihaoxiang/p/17215302.html
像这种数组或字符串的旋转可以通过
局部反转+整体反转 达到左旋转的目的
整体反转+局部反转 达到右旋转的目的

> 代码(不申请额外空间)


class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        k = k % nums.size();
        reverse(nums.begin(), nums.end());
        reverse(nums.begin(), nums.begin() + k);
        reverse(nums.begin() + k, nums.end());

    }
};

> 代码(申请额外空间)


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

标签:begin,轮转,nums,int,旋转,数组,189,size
From: https://www.cnblogs.com/lihaoxiang/p/17503441.html

相关文章

  • php 二维数组排序
    主要通过 array_multisort函数来进行排序<?php//原数组$arr=[["name"=>"小明","age"=>18],["name"=>"小红","age"=>7],["name"=>"小刚","age"=>52],[&......
  • 941. 有效的山脉数组
    给定一个整数数组arr,如果它是有效的山脉数组就返回true,否则返回false。让我们回顾一下,如果arr满足下述条件,那么它是一个山脉数组:arr.length>=3在0<i<arr.length-1条件下,存在i使得:arr[0]<arr[1]<...arr[i-1]<arr[i]arr[i]>arr[i+1]>...>arr[ar......
  • mongodb第八篇:数组操作
    db.students.insertOne({"_id":1,"grades":[80,85,90]})db.students.insertOne({"_id":2,"grades":[88,90,92]})db.students.insertOne({"_id":3,"grades":[85,100,90]})需求1、把_id为1的文档的grades数组中的85改成8......
  • leetcode 48 旋转图像 rotate-image【ct】
    ====思路:1.对角线翻折  i=0;i<matrix.lengthj=i;j<matrix.lengthmatrix[i][j]matrix[j][i]=matrix[j][i]matrix[i][j]2.左右翻折i=0i<matrix.lengthj=0j<Math.floor(matrix.length/2)matrix[i][j]matrix[i][matrix.lengt......
  • 树状数组
    维护时间复杂度O(nlogn)查询时间复杂度O(logn)优点:好写缺点fw没啥用主要就是用一个叫lowbit的东西来实现用一个树状的东西维护区间和等,其实只要记住修改的时候+=lowbit(x),查询的时候-=lowbit(x)就行了1.板子这个应该都会吧qwq#include<bits/stdc++.h>#defineintlong......
  • C语言中将二维数组作为函数参数来传递
    C语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下:方法一,形参给出第二维的长度#include<stdio.h>voidfunc(intn,charstr[][5]){inti;for(i=0;i<n;i++)printf("/nstr[%d]=%s/n",i,str[i]);}voidmain(){char*p[3];charstr[]......
  • 【js学习笔记四】数组双重去重的方式三filter
     目录前言导语运行结果总结前言   我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语   数组......
  • 【js学习笔记五】数组双重去重的方式四先排序在对比
     目录前言导语 代码部分运行结果总结前言   我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语......
  • 【LeetCode摩尔投票】有趣的简单题:数组中出现次数超过一半的数字
    数组中出现次数超过一半的数字https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入:[1,2,3,......
  • Java 一维数组的使用
    Java一维数组的使用1.一维数组的定义在不知道数组内容可以直接使用下面的定义方法:int[]arr=newint[数组个数];或intarr[]=newint[数组个数];在知道数组内容可以使用如下:int[]arr={data1,data2,data.....};2.数组的传递数组的传递与其他基本类型的值传递不同,......