【三次翻转】旋转数组

求解代码

java 复制代码
public int[] solve(int n, int m, int[] a) {
        m %= n;
        reverse(a, 0, n - 1);
        reverse(a, 0, m - 1);
        reverse(a, m, n - 1);
        return a;
    }

    private void reverse(int[] arr, int start, int end) {
        while (start < end) {
            swap(arr, start++, end--);
        }

    }

    private void swap(int[] arr, int i, int j) {
        int tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }

小贴士

因为右移 n 位 = 没动右移 n + k 位 = 右移 k 位

所以,要通过取余操作把 m 压缩到 [0, n-1] 范围。

相关推荐
许心月6 分钟前
Java学习资料网站汇总
java
c2385610 分钟前
第二篇:《测试指挥官:可视化单题自测框架(含 assert 实操)》
java·数据库·c++·算法·安全性测试
辞旧 lekkk28 分钟前
【Redis初阶】常见数据类型
开发语言·数据库·c++·redis·学习·缓存·bootstrap
帅次1 小时前
Kotlin 与 Java 互操作:混合工程里的平台类型与 API 边界
java·开发语言·kotlin·suspend·nullable
X-⃢_⃢-X1 小时前
一、第一阶段:认识 Spring Boot
java·spring boot·后端
前端工作日常1 小时前
我学习到的Java程序的生命周期
java·后端
SunnyDays10112 小时前
Java 实现 PDF 页面删除、排序、旋转和裁剪
java·pdf
人工干智能2 小时前
科普:Pandas 索引器 loc 与 iloc 的编程思维
java·人工智能·pandas
dtq04243 小时前
C语言-结构体详解
c语言·开发语言·学习
梅雅达编程笔记3 小时前
编程启蒙|Scratch 转 Python 系列第9天:字典/哈希表积木双向对照(AI大模型参数配置表实战)
开发语言·人工智能·python·numpy·pandas