将一个数组中的元素轮转

向右轮转 k 个位置

可以通过三次翻转实现:

  1. 翻转整个数组。
  2. 翻转前 k mod n 个元素。
  3. 翻转剩余的 n-k mod n 个元素。

向左轮转 k 个位置

同样可以通过三次翻转实现:

  1. 翻转整个数组。
  2. 翻转前 n-k mod n个元素。
  3. 翻转剩余的 k mod n 个元素。

值得注意的是向右或向左旋转在某种意义上是等效的,可以用一个滑轮条带来模拟,从上面转到下面算一次翻转。

轮转也可以通过取模的操作得到

如何翻转一个数组?

使用两个指针交换前后元素

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

最近更新

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

    2024-01-18 10:38:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-18 10:38:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-18 10:38:02       87 阅读
  4. Python语言-面向对象

    2024-01-18 10:38:02       96 阅读

热门阅读

  1. 03 SpringBoot整合MVC+Application.yaml的Web配置

    2024-01-18 10:38:02       57 阅读
  2. .Net 全局过滤,防止SQL注入

    2024-01-18 10:38:02       55 阅读
  3. apache seatunnel web 安装部署

    2024-01-18 10:38:02       56 阅读
  4. 有关引入介绍

    2024-01-18 10:38:02       55 阅读
  5. android 中一个app中打开另一个app

    2024-01-18 10:38:02       60 阅读
  6. 基于kubernetes部署MySQL主从环境

    2024-01-18 10:38:02       45 阅读