返回将一维数组向右旋转k个位置的结果。比如,一维数组{1,2,3,4,5},k=2时,返回结果是{4,5,1,2,3}。
不要着急写代码!!!
package com.zhang.suanfa;
import java.util.*;
/**
* 返回将一维数组向右旋转k个位置的结果。
* 比如,一维数组{1,2,3,4,5},k=2时,返回结果是{4,5,1,2,3}。
*/
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
int[] datas = {1,2,3,4,5};
int[] datas2 = rotateK(datas,2);
//int[] datas3 = betterRoteK(datas,2);
for (int i = 0; i < datas.length; i++)
System.out.println(datas[i]);
}
//好办法
public static int[] betterRoteK(int[] datas, int k){
for (int i = k+1; i < datas.length; i++) {
for (int j = i; j >= i - k; j--) {
int t=datas[j];
datas[j]=datas[j-1];
datas[j-1]=t;
}
}
return datas;
}
//NT办法
public static int[] rotateK(int[] datas,int k) {
int[] datas1=new int[k+1];
ArrayList<Integer> datas2 = new ArrayList();
for(int i=0;i<datas.length;i++){
if(i<=k){
datas1[i]=datas[i];
}else{
datas2.add(datas[i]);
}
}
for(int i=0;i<datas1.length;i++)
datas2.add(datas1[i]);
for(int i=0;i<datas.length;i++){
datas[i]=datas2.get(i);
}
return datas;
}
}