『力扣刷题本』:轮转数组

一、题目

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

二、思路解析

这道题我又是没做出来啦,不过我学到了一个新的解题方法--双数组!

顾名思义,就是利用一个新数组来解题。

这道题里面,我们其实只要想明白一步即可,就是怎么把因为轮转而存不下的元素先给存下来,就行啦。

那么,我们可以用这一步来解决:

复制代码
newArr[(i + k) % n] = nums[i];

把这些元素放好之后,我们在对数组进行一个拷贝即可。这个拷贝的方法,也是我不太熟悉的,嗯,直到自己哪里薄弱,是件好事,以后广而避之就行。

三、完整代码

复制代码
class Solution {
    public void rotate(int[] nums, int k) {
        
        int[] newArray = new int [nums.length];
        for(int i = 0; i < nums.length ; i++){
            newArray[(i+k)%nums.length] = nums[i];
        }

        System.arraycopy(newArray,0,nums,0,nums.length);

    }
}

以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!

相关推荐
love530love2 分钟前
【探讨】“父级/基环境损坏,子环境全部失效”,如何避免 .venv 受父级 Python 损坏影响?
java·开发语言·人工智能·windows·python·编程·ai编程
企鹅侠客5 分钟前
第06章—实战应用篇:List命令详解与实战(上)
数据结构·windows·redis·list
历程里程碑13 分钟前
LeetCode 560题:和为K子数组最优解
算法·哈希算法·散列表
java硕哥21 分钟前
Spring源码debug方法
java·后端·spring
qq_4017004128 分钟前
C/C++中的signed char和unsigned char详解
c语言·c++·算法
BoBoZz1929 分钟前
FlatVersusGouraud 对比平面着色和高洛德着色
python·vtk·图形渲染·图形处理
智航GIS29 分钟前
7.1 自定义函数
前端·javascript·python
杂货铺的小掌柜33 分钟前
MAC版IDEA常用快捷键
java·macos·intellij-idea
leoufung41 分钟前
LeetCode 67. Add Binary:从面试思路到代码细节
算法·leetcode·面试
import_random43 分钟前
[虚拟环境]venv工具(实战)
python