LeetCode 189.轮转数组

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

思路

代码

java 复制代码
class Solution {
    public void rotate(int[] nums, int k) {
        int n = nums.length;
        k = k % n;
        reverse(nums, 0, n);
        reverse(nums, 0, k);
        reverse(nums, k, n);

    }

    private void reverse(int[] nums, int start, int end) {
        while(start < end) {
            int tmp = nums[start];
            nums[start] = nums[end - 1];
            nums[end - 1] = tmp;
            start++;
            end--;
        }
    }
}

性能:时间复杂度O(n) 空间复杂度O(1)

相关推荐
行走的bug...21 分钟前
用图论来解决问题
算法·图论
岁忧2 小时前
(LeetCode 每日一题) 3541. 找到频率最高的元音和辅音 (哈希表)
java·c++·算法·leetcode·go·散列表
pusue_the_sun2 小时前
每日算法题推送
算法·双指针
KyollBM2 小时前
【Luogu】P9809 [SHOI2006] 作业 Homework (根号算法)
算法
jmxwzy2 小时前
leetcode274.H指数
算法
纪元A梦2 小时前
贪心算法应用:信用评分分箱问题详解
java·算法·贪心算法
007php0073 小时前
Redis高级面试题解析:深入理解Redis的工作原理与优化策略
java·开发语言·redis·nginx·缓存·面试·职场和发展
过河卒_zh15667664 小时前
9.13AI简报丨哈佛医学院开源AI模型,Genspark推出AI浏览器
人工智能·算法·microsoft·aigc·算法备案·生成合成类算法备案
D.....l4 小时前
冒泡排序与选择排序以及单链表与双链表
数据结构·算法·排序算法