LeetCode hot100-15

java 复制代码
189. 轮转数组
给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

这题做出来了,思路和官方思路3一样,但是用了集合自带的翻转方法,在数组和List转换看起来没那么简洁

向右循环移动k个位置相当于执行以下三个步骤

1.整体翻转

2.前k个数翻转

3.后n-k个数翻转

我的代码

注意list自带的reverse不能指定下标,所以又定义了两个list,使用subList可以直接复制且指定下标,左闭区间右开区间的原则。[0,k),[k,list.size())

java 复制代码
class Solution {
    public void rotate(int[] nums, int k) {
        k = k % nums.length;
        List<Integer> list = new ArrayList<Integer>();
        for (int num : nums) {
            list.add(num);
        }

        Collections.reverse(list);
        List<Integer> list1 = new ArrayList<>(list.subList(0, k));
        Collections.reverse(list1);
        List<Integer> list2 = new ArrayList<>(list.subList(k, list.size()));
        Collections.reverse(list2);
        list1.addAll(list2);

        for (int i = 0; i < list1.size(); i++) {
            nums[i] = list1.get(i);
        }
    }

}

官方解法三

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

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

作者:力扣官方题解
链接:https://leetcode.cn/problems/rotate-array/solutions/551039/xuan-zhuan-shu-zu-by-leetcode-solution-nipk/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关推荐
Sunsets_Red5 分钟前
浅谈随机化与模拟退火
java·c语言·c++·python·算法·c#·信息学竞赛
Felven9 分钟前
A. Add and Divide
数据结构·算法
Frostnova丶13 分钟前
LeetCode 67. 二进制求和
算法·leetcode
上海锟联科技23 分钟前
DAS 与 FBG 振动监测对比:工程应用中该如何选择?
数据结构·算法·分布式光纤传感
星火开发设计24 分钟前
模板参数:类型参数与非类型参数的区别
java·开发语言·前端·数据库·c++·算法
JialBro33 分钟前
【嵌入式】直流无刷电机FOC控制算法全解析
算法·嵌入式·直流·foc·新手·控制算法·无刷电机
昌兵鼠鼠33 分钟前
LeetCode Hot100 哈希
学习·算法·leetcode·哈希算法
忘梓.34 分钟前
二叉搜索树·极速分拣篇」:用C++怒肝《双截棍》分拣算法,暴打节点删除Boss战!
开发语言·c++·算法
人工智能AI酱35 分钟前
【AI深究】高斯混合模型(GMM)全网最详细全流程详解与案例(附Python代码演示) | 混合模型概率密度函数、多元高斯分布概率密度函数、期望最大化(EM)算法 | 实际案例与流程 | 优、缺点分析
人工智能·python·算法·机器学习·分类·回归·聚类
Aileen_0v035 分钟前
【数据结构中链表常用的方法实现过程】
java·开发语言·数据结构·算法·链表·动态规划·csdn开发云