Seawolf 发表于 2019-9-5 10:30:43

leetcode 189. Rotate Array

本帖最后由 Seawolf 于 2020-9-16 04:15 编辑

Given an array, rotate the array to the right by k steps, where k is non-negative.

Example 1:

Input: and k = 3
Output:
Explanation:
rotate 1 steps to the right:
rotate 2 steps to the right:
rotate 3 steps to the right:
Example 2:

Input: [-1,-100,3,99] and k = 2
Output:
Explanation:
rotate 1 steps to the right:
rotate 2 steps to the right:
Note:

Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
Could you do it in-place with O(1) extra space?


class Solution {
    public void rotate(int[] nums, int k) {
      if(nums.length ==0 || nums.length ==1) return;
   
      if(k == 0) return;
      
      if(k > nums.length) k = k % nums.length;
      int[] res = new int;
      
      for(int i = 0; i < nums.length; i++){
            
            if(i <k){
               
                res = nums;
               
            }else if(i >=k){
               
                res = nums;
            }
      }
      
      for(int i = 0; i < nums.length; i++){
            
            nums = res;
      }
      
    }
}

class Solution {
    public void rotate(int[] nums, int k) {
      
      if(nums.length == 0 || nums.length == 1) return;
      
      if(k>nums.length) 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(end - start >= 1 && start < end){
            
            int i = nums;
            
            nums = nums;
            
            nums =i;
            
            start++;
            end--;
      }
    }
}
页: [1]
查看完整版本: leetcode 189. Rotate Array