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

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


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. 思路

  1. 定义n表示数组长度。
int n = num.length
  1. 定义数组newNums,长度为n
int[] newNums = new int[n];
  1. 遍历原数组,将原数组下标为i对的元素放置新数组下标为(i + k) % n的位置。
for(int i = 0; i < n; i++){
  newNums[(i + k) % n] = nums[i];
}
  1. 将新数组拷贝至原数组即可。
for(int j = 0; j < n; j++){
  nums[j] = newNums[j];
}

3. 代码

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];
        }
    }
}

运行结果:

相关文章
|
1月前
|
算法
【数组相关面试题】LeetCode试题
【数组相关面试题】LeetCode试题
|
1月前
|
存储
力扣面试经典题之数组/字符串
力扣面试经典题之数组/字符串
23 0
|
11天前
|
C++
【力扣】2562. 找出数组的串联值
【力扣】2562. 找出数组的串联值
|
1月前
|
存储 算法
《LeetCode 热题 HOT 100》——寻找两个正序数组的中位数
《LeetCode 热题 HOT 100》——寻找两个正序数组的中位数
|
1月前
|
存储
力扣刷题-最大子数组和
力扣刷题-最大子数组和
10 1
|
1月前
leetcode2967. 使数组成为等数数组的最小代价
leetcode2967. 使数组成为等数数组的最小代价
20 0
|
1月前
|
算法 搜索推荐
LeetCode刷题---215. 数组中的第K个最大元素(双指针,快速选择)
LeetCode刷题---215. 数组中的第K个最大元素(双指针,快速选择)
|
1月前
|
Go C++
【力扣】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
【2月更文挑战第17天】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
31 8
|
1月前
|
算法 测试技术 索引
力扣面试经典题之数组/字符串(二)
力扣面试经典题之数组/字符串(二)
13 0
|
1月前
|
存储 算法 语音技术
【数据结构与算法】力扣刷题记之 稀疏数组
【数据结构与算法】力扣刷题记之 稀疏数组