前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每日一题】6.LeetCode——轮转数组

【每日一题】6.LeetCode——轮转数组

作者头像
爱敲代码的小杨.
发布2024-05-07 18:31:59
860
发布2024-05-07 18:31:59
举报
文章被收录于专栏:JavaJava

1. 题目描述

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

提示

  • 1 <= nums.length <= 105
  • -231 <= nums[i] <= 231 - 1
  • 0 <= k <= 105

题目链接?

2. 思路

定义n表示数组长度。

代码语言:javascript
复制
int n = num.length

定义数组newNums,长度为n

代码语言:javascript
复制
int[] newNums = new int[n];

遍历原数组,将原数组下标为i对的元素放置新数组下标为(i + k) % n的位置。

代码语言:javascript
复制
for(int i = 0; i < n; i++){
	newNums[(i + k) % n] = nums[i];
}

将新数组拷贝至原数组即可。

代码语言:javascript
复制
 for(int j = 0; j < n; j++){
	nums[j] = newNums[j];
}

3. 代码

代码语言:javascript
复制
class Solution {
    public void rotate(int[] nums, int k) {
        int n =  nums.length;
        int[] newNums = new int[n];

        for(int i = 0; i < n; i++){
            newNums[(i + k) % n] = nums[i];
        }
        for(int j = 0; j < n; j++){
            nums[j] = newNums[j];
        }
    }
}

运行结果:

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 题目描述
    • 示例1:
      • 示例2
        • 提示
        • 2. 思路
        • 3. 代码
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
        http://www.vxiaotou.com