Loading

字节跳动一面——慌得一

返回将一维数组向右旋转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;
    }
}
posted @ 2021-09-17 19:33  zhangj9  阅读(50)  评论(0)    收藏  举报