gpt4 book ai didi

java - 哪个更贵 : using variables or using for loop instead of declaring variables to hold temp results?

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

我正在处理这个问题:检查一个数组是否是 Bean 数组。如果数组满足以下条件,则定义为 Bean 数组:如果它包含 9,则它还包含 13。如果它包含 7,则它不包含 16。

我尝试了两种方法来解决这个问题。但我不确定哪种代码在“时空复杂度”或与 Big O 相关的方面被认为更有效。

这是我的两种写法:

1

static int isBean2(int[] a)
{
for(int i=0;i<a.length;i++) {
if(a[i]==9){
for(int j=0;j<a.length;j++){
if(a[j]==13)
break;
if(j==a.length-1 && a[j]!=13)
return 0;
}
}
if(a[i]==7) {
for(int k=0;k<a.length;k++)
if(a[k]==16)
return 0;
}
}
return 1;
}
}

2

static int isBean(int[] a)
{
int n=0;
int t=0;
int seven=0;
int sixteen=0;
for(int i=0; i<a.length;i++){
if(a[i]==9)
n=1;
if(a[i]==13)
t=1;
if(a[i]==7)
seven=1;
if(a[i]==16)
sixteen=1;
}
if(n==1 && t==0)
return 0;
if(seven==1 && sixteen==1)
return 0;
return 1;
}

第二个代码看起来很愚蠢,但是,请问有更好的答案吗?

最佳答案

第一个解决方案的最坏情况复杂度为 O(n^2),而第二个解决方案的复杂度为 O(n),但根据上述要求是错误的。

对于第二种解决方案,您可以在循环结束后进行以下更正:


if ((n == 1 && t == 1) || (seven == 1 && sixteen == 0))
return 1;
return 0;

关于java - 哪个更贵 : using variables or using for loop instead of declaring variables to hold temp results?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57096807/

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