leetcode189:轮转数组

leetcode189轮转数组

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

最大公约数法:

时间复杂度O(n^2)

空间复杂度O(1)

解析:

k和数组长度的最大公约数为n

代表数据可以分为n组去移动

做n次循环向后移动k位即可

java 复制代码
public void rotate(int[] nums, int k) {
        if(k>=nums.length){
            k = k%nums.length;
        }
        if(k == 0) {
            return;
        }
        int tmpa = k;
        int tmpb = nums.length;
        int tmpc = 0;
        while(tmpb != 0){
            tmpc = tmpa%tmpb;
            tmpa = tmpb;
            tmpb = tmpc;
        }

        for (int j = 0; j< tmpa; j++) {
                //下一次要存的位置
                int res = k+j;
                int start = nums[j];
                for (int i = 0; i < nums.length/tmpa; i++) {
                    int end = nums[res%nums.length];
                    nums[res] = start;
                    res = (res + k) % nums.length;
                    start = end;
                }
        }
    }
三次反转法

解析:

1234567->5671234

即->7654321-> 765 4321 ->567 1234

三次反转完成

java 复制代码
 public void rotate(int[] nums, int k) {
        if(k>=nums.length){
            k = k%nums.length;
        }
        if(k == 0) {
            return;
        }
        this.reverse(nums,0,nums.length-1);
        this.reverse(nums,0,k-1);
        this.reverse(nums,k,nums.length-1);
    }

    public void reverse(int[] nums,int start,int end){
        int tmp = 0;
        while(start < end){
            tmp = nums[start];
            nums[start] = nums[end];
            nums[end] = tmp;
            start++;
            end--;
        }
    }
相关推荐
深圳满意度咨询30 分钟前
医院满意度数字化测评系统:从数据采集到智能决策的技术实践
算法
海宇AI1 小时前
零信任架构实战:基于海宇柠檬查出险-登记证构建自动化车抵贷核保网关
java·人工智能·架构·自动化
xiangyun611 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法
xiangyun611 小时前
【408数据结构 06】双链表、循环链表、静态链表
c语言·开发语言·数据结构·c++·算法
cfm_29142 小时前
单例模式详解
java
我叫张土豆3 小时前
本体论、DDD、SDD、TDD:AI 编程时代的四层认知栈
java·人工智能
OKkankan3 小时前
LangChain 能力详解!:输出解析、RAG、向量数据库与 Retriever 检索器
数据结构·python·langchain·ai应用
蓝速科技3 小时前
便民服务大厅 AI 数字人一体机场景适配与落地指南丨蓝速科技
大数据·网络·数据结构·人工智能·自然语言处理·数据分析·运维开发
白远山3 小时前
家政服务家政社区派单实战:调度系统架构设计与实现指南
java·开发语言·小程序·架构·需求分析
海南java第二人3 小时前
从诞生到回收:JVM对象生命周期与垃圾回收全链路解析
java