gpt4 book ai didi

java - 优化阵列旋转程序

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:02 25 4
gpt4 key购买 nike

我的代码执行时间太长。有人可以帮我优化这个程序吗?

限制:

  • 时间:4秒
  • 内存:512 MB

代码:

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {
private static int[] a;
public static void swap(int i){
int temp=a[i];
a[i]=a[i-1];
a[i-1]=temp;
}
public static void rotate(int times,int n){
for(int j=0;j<times;j++)
for(int i=n-1;i>0;i--)
swap(i);
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int k = in.nextInt();
int q = in.nextInt();
a = new int[n];
int m[]=new int[q];
for(int a_i=0; a_i < n; a_i++){
a[a_i] = in.nextInt();
}
for(int a0 = 0; a0 < q; a0++){
m[a0] = in.nextInt();
}

rotate(k%n,n);

for(int a0 = 0; a0 < q; a0++){
System.out.println(a[m[a0]]);
}

}
}

我认为必须有一些更好的方法来交换或旋转数组。

最佳答案

我认为不需要实际旋转数组......您可以只打印执行旋转后预期位置的位置。

   //rotate(k%n,n);

for(int a0 = 0; a0 < q; a0++){
if(m[a0]+(k%n)>n)
System.out.println((a[m[a0]+(k%n)-n]));
else
System.out.println((a[m[a0]+(k%n)]))
}

关于java - 优化阵列旋转程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41383700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com