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

轮转数组

时间:2024-11-20 17:09:07浏览次数:1  
标签:轮转 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]

思路

  • 不使用额外的数组空间,可以先将数组反转,然后再反转0到k-1,反转k-num.lenght-1操作
  • 结果
    原始数组 1 2 3 4 5 6 7
    翻转所有元素 7 6 5 4 3 2 1
    翻转 [0,kmodn−1] 区间的元素 5 6 7 4 3 2 1
    翻转 [kmodn,n−1] 区间的元素 5 6 7 1 2 3 4

代码实现

public void rotate(int[] nums, int k) {
    k = k % nums.length;
    reverse(nums,0,nums.length-1);
    reverse(nums, 0, k-1);
    reverse(nums, k, nums.length-1);

}

public void reverse(int[] nums, int start, int end) {
    while (start <= end) {
        int temp = nums[start];
        nums[start] = nums[end];
        nums[end] = temp;
        start++;
        end--;
    }
}

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

相关文章

  • Scala之Array数组
     可修改的Arrayimportscala.collection.mutable.ArrayBuffer//Array:数组//可修改的:ArrayBuffer//不可修改的:ArrayobjectTest1{//可修改的:ArrayBufferdefmain(args:Array[String]):Unit={//1.新建valarr1=ArrayBuffer(1,2,3)//2.添加......
  • 0基础勇闯C语言(2) 数组
    数组可分为数值数组,字符数组,指针数组,结构体数组。一,一维数组1,一维数组的命名inta[5]={1,2,9,23,8};(数组下标范围是0-n-1)2,一维数组的应用冒泡排序和选择排序二,二维数组1,二维数组的命名(2种)inta[2][3]={{1,2,3},{4,5,6}};inta[2][3]={1,2,3,4,5,6};2,二维数组的理解......
  • 2024-11-20:交替子数组计数。用go语言,给定一个二进制数组 nums, 如果一个子数组中的相邻
    2024-11-20:交替子数组计数。用go语言,给定一个二进制数组nums,如果一个子数组中的相邻元素的值都不相同,我们称这个子数组为交替子数组。请返回数组nums中交替子数组的总数。输入:nums=[0,1,1,1]。输出:5。解释:以下子数组是交替子数组:[0]、[1]、[1]、[1]以及[0,1]。......
  • PHP二维数组排序算法函数
    以使用PHP内置的array_multisort()函数来对二维数组进行排序。array_multisort()函数可以对多个数组或多维数组的一个或多个列进行排序。下面是一个示例函数,该函数可以对二维数组按指定列进行排序:<?phpfunctionsort2DArrayByColumn(&$array,$columnKey,$sortOrder=SORT_......
  • 洛谷题单指南-二叉堆与树状数组-P2161 [SHOI2009] 会场预约
    原题链接:https://www.luogu.com.cn/problem/P2161题意解读:本题前面形式化描述已经足够清晰。解题思路:要判断线段之间是否有冲突(包含或者交叉),可以借助set,参考:https://www.cnblogs.com/jcwy/p/18447333只不过这里要统计冲突的数量,也就是允许相等的元素重复存在,可以借助multiset......
  • 3354. 使数组元素等于零
     给你一个整数数组 nums 。开始时,选择一个满足 nums[curr]==0 的起始位置 curr ,并选择一个移动 方向 :向左或者向右。此后,你需要重复下面的过程:如果 curr 超过范围 [0,n-1] ,过程结束。如果 nums[curr]==0 ,沿当前方向继续移动:如果向右移,则 递增 curr......
  • 数据结构复习 ---- 顺序表(数组)--定长版本+不定长版本
    //我的思考************////1.顺序表是一种线性结构(一对一关系),每个数据都是有一个前驱(除了第一个元素)和一个后继(除了最后一个元素)//2.顺序表分为定长顺序表(指针存储固定数量的元素)和不定长顺序表(顾名思义。。。使用较多)----类似于动态数组,就像Go语言中的切片,Pytho......
  • 2024/11/18日 日志 数据结构实验(1)---链表逆置、线性表A,B顺序存储合并、双向循环链表应
    链表逆置题目:https://pintia.cn/problem-sets/1855808612225744896/exam/problems/type/6?problemSetProblemId=1855808768018968576解答:点击查看代码structListNode*reverse(structListNode*head){structListNode*prev=NULL;structListNode*current=head;......
  • 字节青训-小C的类二进制拼图、小M的奶酪问题、小T的密码变换规则、数值操作的期望计算
    目录一、小C的类二进制拼图问题描述测试样例解题思路:问题理解数据结构选择算法步骤第一版代码:最终代码:  二、小M的奶酪问题问题描述测试样例解题思路:问题理解数据结构选择算法步骤 最终代码:运行结果: 三、小T的密码变换规则问题描述测试样例 解题......
  • 字节青训-判断数组是否单调、判断回旋镖的存在、字符串解码问题、小F的矩阵值调整、数
    目录一、判断数组是否单调问题描述测试样例解题思路:解题思路数据结构选择算法步骤 最终代码:运行结果:​编辑  二、判断回旋镖的存在问题描述测试样例解题思路: 解题思路算法步骤最终代码:运行结果:​编辑 三、字符串解码问题问题描述测试样例 解题思......