返回一维数组向右旋转k个位置的结果。例如:数组{1,2,3,4,5} k=2时,返回数组{4,5,1,2,3}
思路:三次反转数组:第一次反转整个数组{1,2,3,4,5}——>{5,4,3,2,1}
第二次反转数组的前k个数{5,4,3,2,1}------>{4,5,3,2,1}
第三次反转数组剩下的数{4,5,3,2,1}------>{4,5,1,2,3},即为最终结果。
int[] rotateK(int[] A,int k){ if (A == null||A.length<=k) return A; reverse(A,0,A.length-1);//反转整个数组 reverse(A,0,k-1);//反转前k个数 reverse(A,k,A.length-1);//反转剩下的数 return A; } void reverse(int[] A, int start,int end){ while(start<end){ int temp = A[start]; A[start] = A[end]; A[end] = temp; start++; end--; } }