gpt4 book ai didi

java - 我怎样才能减少执行时间?

转载 作者:行者123 更新时间:2023-12-02 01:02:23 25 4
gpt4 key购买 nike

我需要此代码在 0.15 秒内运行。这是代码:

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
int n=s.nextInt();
int k=s.nextInt();
for(int i=0;i<k;i++) {
for(int j=1; j<=(n-i); j++)System.out.print(" ");
for(int j=1;j<=((2*i)+1);j++) System.out.print("*");
System.out.println();
}
for(int i=k; i<=n;i++) {
for(int j=1; j<=(n-i); j++)System.out.print(" ");
for(int j=1;j<=k;j++)System.out.print("*");
for(int j=1;j<=((2*(i-k))+1);j++)System.out.print(" ");
for(int j=1;j<=k;j++)System.out.print("*");
System.out.println();
}

for(int i=(n-1); i>=k;i--) {
for(int j=1; j<=(n-i); j++)System.out.print(" ");
for(int j=1;j<=k;j++)System.out.print("*");
for(int j=1;j<=((2*(i-k))+1);j++)System.out.print(" ");
for(int j=1;j<=k;j++)System.out.print("*");
System.out.println();
}
for(int i=(k-1);i>=0;i--) {
for(int j=1; j<=(n-i); j++)System.out.print(" ");
for(int j=1;j<=((2*i)+1);j++) System.out.print("*");
System.out.println();
}
}

}

这是示例输入和输出。

input:
n=10
k=3
output:
*
***
*****
*** ***
*** ***
*** ***
*** ***
*** ***
*** ***
*** ***
*** ***
*** ***
*** ***
*** ***
*** ***
*** ***
*** ***
*** ***
*****
***
*

为此我可以对其进行哪些更改?我花了很多时间思考它,但毫无结果。...................................................... ................................................

最佳答案

您可能想尝试使用 StringBuilder 和 StringUtils为您进行字符串填充,如下所示:

public static void print2(int n, int k) {
StringBuilder output = new StringBuilder();

for (int i = 0; i < k; i++) {
output.append(StringUtils.leftPad("", n-i,' '));

output.append(StringUtils.leftPad("", 2*i+1,'*'));
output.append(System.lineSeparator());
}
for (int i = k; i <= n; i++) {
output.append(StringUtils.leftPad("", n-i,' '));
output.append(StringUtils.leftPad("", k,'*'));
output.append(StringUtils.leftPad("", 2*(i-k)+1,' '));
output.append(StringUtils.leftPad("", k,'*'));
output.append(System.lineSeparator());
}

for (int i = (n - 1); i >= k; i--) {
output.append(StringUtils.leftPad("", n-i,' '));
output.append(StringUtils.leftPad("", k,'*'));
output.append(StringUtils.leftPad("", 2*(i-k)+1,' '));
output.append(StringUtils.leftPad("", k,'*'));
output.append(System.lineSeparator());
}
for (int i = (k - 1); i >= 0; i--) {
output.append(StringUtils.leftPad("", n-i,' '));
output.append(StringUtils.leftPad("", 2*i+1,'*'));
output.append(System.lineSeparator());
}

System.out.println(output.toString());
}

看这和你的逻辑是一样的。要进一步改进,您需要重新设计算法。在我的虚拟主机上,它的运行速度大约快 5 倍。

关于java - 我怎样才能减少执行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60501510/

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