classSolution { publicvoidrotate(int[] nums, int k) { if (k != 0){ intm= gcd(nums.length,k); for (intn=0; n < m; n++ ) { inti= n + k; i %= nums.length;
inttemp= nums[n]; while( true ){ inttempI= nums[i]; nums[i] = temp; temp = tempI; i += k; i %= nums.length; if (i == n){ nums[n] = temp; break; } } } } } privateintgcd(int a, int b){ intmax= a; intmin= b; if (max == min){ return min; } if ( a < b ){ max = b; min = a; } return gcd(max - min, min); } }