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

今日中等题: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

你可能感兴趣的:(2022-04-26 「189. 轮转数组」)