给定一个整数数组 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]
注意:有可能轮转多轮,注意起始结束标号
import java.util.Scanner;
class Solution {
public void rotate(int[] nums, int k) {
if(k>nums.length) {
for (int i = 0; i < k; i++) {
int temp = nums[nums.length - 1];
for (int j = nums.length - 1; j > 0; j--) {
nums[j] = nums[j - 1];
}
nums[0] = temp;
}
}
else{
int[] temp=new int[k];
int count=0;
for(int i=nums.length-k; i<nums.length; i++){
temp[count]=nums[i];
count++;
}
for(int i=nums.length-k-1; i>=0; i--){
nums[i+k]=nums[i];
}
for(int i=0;i<k;i++){
nums[i]=temp[i];
}
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
String[] str = s.split(",");
int len=str.length;
int[] nums = new int[len];
for(String str1 : str) {
nums[Integer.parseInt(str1)]++;
}
in.nextLine();
int k = in.nextInt();
Solution solution = new Solution();
solution.rotate(nums, k);
in.close();
}
}