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)

相关推荐
程序员三藏4 小时前
Postman接口测试详解
自动化测试·软件测试·python·测试工具·职场和发展·接口测试·postman
旺仔老馒头.4 小时前
【数据结构与算法】手撕排序算法(二)
c语言·数据结构·算法·排序算法
好学且牛逼的马5 小时前
【Hot100 | 2 LeetCode49 字母异位词分组问题】
算法
2301_795167205 小时前
Rust 在内存安全方面的设计方案的核心思想是“共享不可变,可变不共享”
算法·安全·rust
czhc11400756635 小时前
Java117 最长公共前缀
java·数据结构·算法
java 乐山5 小时前
蓝牙网关(备份)
linux·网络·算法
云泽8085 小时前
快速排序算法详解:hoare、挖坑法、lomuto前后指针与非递归实现
算法·排序算法
数字化脑洞实验室5 小时前
智能决策算法的核心原理是什么?
人工智能·算法·机器学习
流烟默5 小时前
机器学习中拟合、欠拟合、过拟合是什么
人工智能·算法·机器学习
Brianna Home5 小时前
现代C++:从性能泥潭到AI基石
开发语言·c++·算法