189. 轮转数组
# 189. 轮转数组 (opens new window)
# 1.数组反转
使用数组反转实现,假设nums=[1,2,3,4,5,6,7],k=3,可以这么做:
- 首先将整个数组反转:[7,6,5,4,3,2,1]
- 前k个数进行反转:[5,6,7,4,3,2,1]
- 最后将后面nums.length-k个数进行反转:[5,6,7,1,2,3,4]
class Solution {
public void rotate(int[] nums, int k) {
k=k%nums.length;
reverse(nums,0,nums.length-1);
reverse(nums,0,k-1);
reverse(nums,k,nums.length-1);
}
public void reverse(int[] nums,int start,int end){
if(start>=end) return ;
for(int i=start;i<=(end+start)/2;i++){
int swap=nums[i];
nums[i]=nums[start+end-i];
nums[start+end-i]=swap;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
编辑 (opens new window)
上次更新: 2023/12/15, 15:49:57