【leetCode Hot100】189.轮转数组
题目给定一个整数数组nums将数组中的元素向右轮转k个位置其中k是非负数。示例 1:输入:nums [1,2,3,4,5,6,7], k 3输出:[5,6,7,1,2,3,4]解释:向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4]解题思路看示例一我们要把 [1,2,3,4,5,6,7] 变成 [5,6,7,1,2,3,4]。1先把 [5,6,7,1,2,3,4] 视作 [5,6,7][1,2,3,4]。我们首先要保证 [5,6,7] 在 [1,2,3,4] 前面这可以通过反转 [1,2,3,4,5,6,7] 得到。2反转后数组变成 [7,6,5,4,3,2,1]即 [7,6,5][4,3,2,1]对比最终目标只需把 [7,6,5] 反转把 [4,3,2,1] 反转就得到了 [5,6,7,1,2,3,4]。出处灵茶山艾府class Solution { public void rotate(int[] nums, int k) { int n nums.length; k % n; reverse(nums,0,n-1); reverse(nums,0,k-1); reverse(nums,k,n-1); } private void reverse(int[] nums,int i,int j){ while(ij){ int temp nums[i]; nums[i] nums[j]; nums[j--] temp; } } }