首页 > 其他分享 >轮转数组(逆转数组)

轮转数组(逆转数组)

时间:2024-12-19 10:57:07浏览次数:5  
标签:轮转 nums int 99 数组 100 逆转

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

示例 2:

输入:nums = [-1,-100,3,99], k = 2
输出:[3,99,-1,-100]
解释: 
向右轮转 1 步: [99,-1,-100,3]
向右轮转 2 步: [3,99,-1,-100]

思路:进行三次逆转数组的操作

class Solution {
public:
    void reverse(vector<int>& nums,int left,int right){
        while(left<right){
            swap(nums[left],nums[right]);
            left++;
            right--;
        }
    }
    void rotate(vector<int>& nums, int k) {
        int n = nums.size();
        k = k%n;
        reverse(nums,0,n-1);
        reverse(nums,0,k-1);
        reverse(nums,k,n-1);
    }
};

 

标签:轮转,nums,int,99,数组,100,逆转
From: https://www.cnblogs.com/yueshengd/p/18616646

相关文章

  • Java学习,查找数组重复元素
    Java中查找数组中的重复元素可以通过多种方法实现,包括使用额外的数据结构(如 HashSet)来跟踪已经遇到的元素,或者使用嵌套循环来比较数组中的每一对元素。使用 HashSet查找:publicclassFindDuplicates{  publicstaticvoidmain(String[]args){    int[]......
  • Java学习,删除数组元素
    Java中数组的长度是固定的,这意味着不能,直接从一个数组中删除元素并期望数组自动调整其大小。可以通过几种方式,来实现删除数组元素的效果。创建一个新数组:publicclassRemoveArrayElement{  publicstaticvoidmain(String[]args){    int[]array={1,2......
  • Java学习,数组反转
    Java反转数组,既将数组中的元素顺序颠倒,可以通过创建一个新的数组来存储反转后的元素,或者原地(in-place)反转数组,即不使用额外的数组空间。使用新数组创建一个新的数组,并按照原数组的反向顺序将元素复制到新数组中:publicclassReverseArrayExample1{  publicstaticvo......
  • 17.数组_一维数组
    1.一维数组的创建和初始化。  1.1数组的创建数组是一组相同类型元素的集合。数组的创建方式:type_t    arr_name      [const_n]//type_t 是指数组的元素类型//const_n  是一个常量表达式,用来指定数组的大小数组创建的实例://代码1  ......
  • 17.数组_二维数组和数组越界
    2.二维数组的创建和初始化 2.1二维1数组的创建//数组创建intarr[3][4];char arr[3][5];doublearr[2][4]; 2.2二维数组的初始化//数组的初始化intarr[3][4]={1,2,3,4};intarr[3][4]={{1,2},{4,5}};intarr[][4]={{2,3},{4,5}};//二维数组如果有初......
  • 【C语言】冒泡法从大到小排列,数组
    下面是一个使用冒泡排序法对10个整数进行由大到小排序的完整C语言示例程序。程序中定义了一个数组a来存放这10个整数,并使用嵌套循环实现冒泡排序的逻辑。voidbubbleSortDescending(intarr[],intn){for(inti=0;i<n-1;i++){for(intj=0;......
  • C语言数组和字符数组和字符串详解
    数组的概念和定义我们知道,要想把数据放入内存,必须先要分配内存空间。放入4个整数,就得分配4个int类型的内存空间:inta[4];这样,就在内存中分配了4个int类型的内存空间,共4×4=16个字节,并为它们起了一个名字,叫a。我们把这样的一组数据的集合称为数组(Array),它所包含的每一个数据叫......
  • 和为 K 的子数组
    给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。 示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2思路:前缀和+哈希表优化 classSolution{public......
  • 在21世纪的我用C语言探寻世界本质——柔性数组
    人无完人,持之以恒,方能见真我!!!共同进步!!文章目录一、什么是柔性数组二、柔性数组的特点三、柔性数组的使用四、柔性数组的优势一、什么是柔性数组也许你从来没有听说过柔性数组(flexiblearray)这个概念,但是它确实是存在的。在C99标准中,如果结构体的最后一个成员是数......
  • 26. 删除有序数组中的重复项
    题目链接解题思路:保证一个有效区,当发现一个「新数」时,就扩大有效区。怎么判断是否是一个新数?来到一个i位置,往左边看,如果相等,则i++,一直到不想等为止。为什么可以这样?因为是有序的。代码classSolution{public:intremoveDuplicates(vector<int>&nums){......