将一个数组中的元素轮转

发布时间:2024年01月18日

向右轮转 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--;
        }
    }

文章来源:https://blog.csdn.net/m0_62844787/article/details/135660462
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。