Hide Tags: Array
解题思路:
先将5以前的数据翻转得到的数组是[4,3,2,1,5,6,7]
再将5及以后的数据翻转得到的数组是[4,3,2,1,7,6,5]
再将整个数组翻转即得到[5,6,7,1,2,3,4]. (即为所求)
代码如下:
public static void rotate(int[]nums,int k) { //获取数组长度 int size=nums.length; /** * 如果K>size,求其等效长度,起初会认为K<size,但是在leetcode的OJ测试的时候 * 会出现这种规律,如实加了下面这行等效长度代码。 */ if (k>size) { k=k%size; } //翻转第K位(不包括第K位)之前的数 reversal(nums,0,size-k-1); //翻转第k位(包括第K位)之后的数 reversal(nums,size-k,size-1); //翻转整个数组 reversal(nums,0,size-1); } public static void reversal(int[] nums,int i,int j) { //设置中间存储变量 int temp=0; //两端往中间依次进行换位 while (i<j&&i>=0) { temp=nums[j]; nums[j]=nums[i]; nums[i]=temp; i++; j--; } }
leetcode——189 Rotate Array Total(数组的翻转)
原文地址:http://blog.csdn.net/zzc8265020/article/details/46458833