【力扣】189. 旋转数组
发布日期:2021-06-29 19:44:17 浏览次数:2 分类:技术文章

本文共 1044 字,大约阅读时间需要 3 分钟。

题目:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。

示例 1:

输入: [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:

输入: [-1,-100,3,99] 和 k = 2

输出: [3,99,-1,-100]
解释:
向右旋转 1 步: [99,-1,-100,3]
向右旋转 2 步: [3,99,-1,-100]

说明:

尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。要求使用空间复杂度为 O(1) 的 原地 算法。
class Solution {
public void rotate(int[] nums, int k) {
if(nums.length == 1) return; k %= nums.length; int j = nums.length - k, temp; for(int i = 0; i < j / 2; i++){
temp = nums[i]; nums[i] = nums[j - i - 1]; nums[j - i - 1] = temp; } for(int i = j; i < (nums.length + j) / 2; i++){
temp = nums[i]; nums[i] = nums[nums.length - 1 + j - i]; nums[nums.length - 1 + j - i] = temp; } for(int i = 0; i < nums.length / 2; i++){
temp = nums[i]; nums[i] = nums[nums.length - i - 1]; nums[nums.length - i - 1] = temp; } }}

转载地址:https://darkness.blog.csdn.net/article/details/104083945 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【力扣】190. 颠倒二进制位
下一篇:【力扣】172. 阶乘后的零

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年05月03日 01时29分27秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章