原题如下:
方法一:
/*
*作者@v7fgg
*执行用时 :243 ms, 在所有 Java 提交中击败了23.32%的用户
*内存消耗 :40.3 MB, 在所有 Java 提交中击败了7.14%的用户
*2020年6月2日 18:54
*/
class Solution {
public void rotate(int[] nums, int k) {
int i=0;
while(i<k){
qianjin(nums);
i++;
}
}
public void qianjin(int[] m){
int l=m.length;
int j=m[l-1];
for(int i=l-1;i>0;i--){
m[i]=m[i-1];
}
m[0]=j;
}
}
/*
*作者@v7fgg
*执行用时 :299 ms, 在所有 Java 提交中击败了9.57%的用户
*内存消耗 :39.7 MB, 在所有 Java 提交中击败了7.14%的用户
*2020年6月2日 19:00
*/
class Solution {
public void rotate(int[] nums, int k) {
int i=0;
while(i<k%(nums.length)){
qianjin(nums);
i++;
}
}
public void qianjin(int[] m){
int l=m.length;
int j=m[l-1];
for(int i=l-1;i>0;i--){
m[i]=m[i-1];
}
m[0]=j;
}
}
方法二:
/*
*作者@v7fgg
*执行用时 :1 ms, 在所有 Java 提交中击败了59.40%的用户
*内存消耗 :40.6 MB, 在所有 Java 提交中击败了7.14%的用户
*2020年6月2日 20:31
*/
class Solution {
public void rotate(int[] nums, int k) {
int l=nums.length;
k=k%l;
if(k!=0){
for(int i=0;i<l/2;i++){
int linshi=nums[i];
nums[i]=nums[l-1-i];
nums[l-1-i]=linshi;
}
for(int i=0;i<k/2;i++){
int linshi=nums[i];
nums[i]=nums[k-1-i];
nums[k-1-i]=linshi;
}
for(int i=k;i<=k+(l-1-k)/2;i++){
int linshi=nums[i];
nums[i]=nums[l-1+k-i];
nums[l-1+k-i]=linshi;
}
}
}
}