2022-04-26 「189. 轮转数组」

2022-04-26  本文已影响0人  柠香萌萌鸡

今日中等题:https://leetcode-cn.com/problems/rotate-array/

哈哈开始还疑惑,这么简单的题怎么可能是中等,咔咔一顿操作提交完,才发现自己没认真看要求,O(1)空间复杂度,我这种新开辟数组空间的就妥妥地不满足了。
难怪题目开始就是void类型,导致我做了两次遍历,第一次把新数组组装好,第二次把数值替换进旧数组。

参考了题解,思路就是做3次翻转,比如nums= [1,2,3,4,5,6,7], k=3:

  1. 把[1,2,3,4,5,6,7]头尾交换,变成[7,6,5,4,3,2,1]
  2. 把前3位做头尾交换,变成[5,6,7,4,3,2,1]
  3. 把后4位做头尾交换,变成[5,6,7,1,2,3,4]

看下我稀碎的答案:

class Solution {
    public void rotate(int[] nums, int k) {
        int n = nums.length;
        int[] ans = new int[n];
        for (int i=0;i<n;i++){
            int m = (i+k) % n;
            ans[m] = nums[i];
        }
        for (int j=0;j<n;j++){
            nums[j]=ans[j];
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读