LeetCode -- Rotate Array

题目描述:
Rotate an array of n elements to the right by k steps.


For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].


就是讲数组的倒数第k个位置以后(包含k)的元素放在数组前。


思路:
1.使用辅助队列来完成。
2.一次遍历,将k位置前的元素入队列。
3.从最后一个元素开始往前遍历,将队列元素依次出队并赋值给nums[i]。 i ∈[n,0)


实现代码


public class Solution {
    public void Rotate(int[] nums, int k) {
        if(nums == null || nums.Length <= 1){
            return;
        }
        
        var q = new Queue<int>();
		for(var i = nums.Length-1; i>=0; i--){
			q.Enqueue(nums[i]);
		}
		
		for(var i = 0 ;i < k; i++){
			var n = q.Dequeue();
			q.Enqueue(n);
		}
		
		for(var i = nums.Length-1;i >=0; i--){
			nums[i] = q.Dequeue();
		}
		
    }
}


你可能感兴趣的:(LeetCode -- Rotate Array)