LeetCode hot100-15

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

这题做出来了,思路和官方思路3一样,但是用了集合自带的翻转方法,在数组和List转换看起来没那么简洁
向右循环移动k个位置相当于执行以下三个步骤
1.整体翻转
2.前k个数翻转
3.后n-k个数翻转

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

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);
        }
    }

}

官方解法三

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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关推荐

  1. LeetCodehot100

    2024-03-22 02:36:01       57 阅读
  2. 一个月速刷leetcodeHOT100 day02

    2024-03-22 02:36:01       37 阅读
  3. 一个月速刷leetcodeHOT100 day 01

    2024-03-22 02:36:01       94 阅读
  4. 一个月速刷leetcodeHOT100 day03

    2024-03-22 02:36:01       33 阅读
  5. 一个月速刷leetcodeHOT100 day08 两道DP题 一道子串

    2024-03-22 02:36:01       34 阅读
  6. 面试经典150题(10-13)

    2024-03-22 02:36:01       57 阅读
  7. LeetCode hot100-15

    2024-03-22 02:36:01       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-22 02:36:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-22 02:36:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-22 02:36:01       82 阅读
  4. Python语言-面向对象

    2024-03-22 02:36:01       91 阅读

热门阅读

  1. python——pytest对于失败的用例重新执行

    2024-03-22 02:36:01       49 阅读
  2. nodejs的中雪花算法(Snowflake)

    2024-03-22 02:36:01       43 阅读
  3. solr functionquery函数查询自定义函数实现

    2024-03-22 02:36:01       47 阅读
  4. 每天学习几道面试题|Kafka(二)架构设计类

    2024-03-22 02:36:01       45 阅读
  5. 美易官方:特斯拉暴跌实是“抄底良机”?

    2024-03-22 02:36:01       46 阅读
  6. Chapter 1 - 2. Introduction to Congestion in Storage Networks

    2024-03-22 02:36:01       39 阅读
  7. mysql日志( Redo Log 、Undo Log、Bin Log)

    2024-03-22 02:36:01       42 阅读