Java 添加StringArrayOfNumber的输出与预期不符
给定一个整数数组,检查数组中是否重复了任何数字。也就是说,数组是否有任何重复项 样本输入1Java 添加StringArrayOfNumber的输出与预期不符,java,arrays,Java,Arrays,给定一个整数数组,检查数组中是否重复了任何数字。也就是说,数组是否有任何重复项 样本输入1 anyDuplicates({1,2,3,4}) 样本输出1 false 样本输入2 anyDuplicates({11,22,33,44,22) 样本输出2 true MyApproach 用于检查元素是否包含重复项。我进行了太多循环,并检查元素是否包含超过或等于2次重复。如果包含重复项,则返回false。否则返回true public boolean anyDuplicates(int[] a
anyDuplicates({1,2,3,4})
样本输出1
false
样本输入2
anyDuplicates({11,22,33,44,22)
样本输出2
true
MyApproach
用于检查元素是否包含重复项。我进行了太多循环,并检查元素是否包含超过或等于2次重复。如果包含重复项,则返回false。否则返回true
public boolean anyDuplicates(int[] arr) {
boolean b1=false;
int count=0;
int z[]=new int[arr.length];
for(int i=0; i<arr.length; i++)
{ count=0; //@Edit
for(int j=0; j<arr.length; j++) {
if(arr[i]==arr[j]) {
count++;
}
}
z[i]=count;
if(z[i]>=2) {
b1=true;
break;
}
}
if(b1==true)
return true;
else
return false;
}
我的问题:为什么我没有得到预期的输出?在您的代码中,更改:
if((i!=j)&(arr[i]==arr[j]))
更干净:
public boolean anyDuplicates(int[] arr)
{
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr.length;j++)
if ((i!=j) && (arr[i]==arr[j]))
return true;
}
return false;
}
public boolean anyDuplicates(int[]arr)
{
对于(int i=0;i设置
Set_Integer=newhashset(Arrays.asList(array_Integer));
//=>尺寸
int sz=Set_Integer.size();
返回(sz!=到达长度);
}
在代码中,更改:
if((i!=j)&(arr[i]==arr[j]))
更干净:
public boolean anyDuplicates(int[] arr)
{
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr.length;j++)
if ((i!=j) && (arr[i]==arr[j]))
return true;
}
return false;
}
public boolean anyDuplicates(int[]arr)
{
对于(int i=0;i设置
Set_Integer=newhashset(Arrays.asList(array_Integer));
//=>尺寸
int sz=Set_Integer.size();
返回(sz!=到达长度);
}
同样地更新代码
for(int i=0;i
同样地更新代码
for(int i=0;i您的代码有两个问题:
您正在将每个元素与自身进行比较
您还将每对数字进行两次比较,这可以减少为一次
下面是一个示例代码,可以解决这两个问题:
public boolean anyDuplicates(int[] arr) {
for(int i=0; i<arr.length-1; i++) {
for(int j=i+1; j<arr.length; j++)
if (arr[i]==arr[j])
return true;
}
return false;
}
public boolean anyDuplicates(int[]arr){
对于(int i=0;i代码中的两个问题:
您正在将每个元素与自身进行比较
您还将每对数字进行两次比较,这可以减少为一次
下面是一个示例代码,可以解决这两个问题:
public boolean anyDuplicates(int[] arr) {
for(int i=0; i<arr.length-1; i++) {
for(int j=i+1; j<arr.length; j++)
if (arr[i]==arr[j])
return true;
}
return false;
}
public boolean anyDuplicates(int[]arr){
对于(int i=0;i您正在将每个元素与自身进行比较…第一个示例的输出也是true
。是否允许使用集合?:)返回集合。newHashSet(ary).size()!=ari.length
@brso05我将每个元素与自身和其他元素进行比较。我假设它自然发生一次。因此,如果它大于或等于2,我将退出循环并返回false。您将每个元素与自身进行比较……第一个示例的输出也是true
。您允许使用集合吗?:)return-Sets.newHashSet(ari).size()!=ari.length
@brso05我将每个元素与自身和其他元素进行比较。我假设它自然出现一次。因此,如果它大于或等于2,我将退出循环并返回false。他的if
语句也需要更改…1
而不是2
。他的if
语句需要更改nge也…1
而不是2
@guillaunme你清理代码我喜欢它。我没有检查I!=j我在做额外的比较。这就是为什么我用计数>=2来打破循环。我假设每个元素都存在一次。我仍然无法找出我出错的原因result@guillaunme你干净的代码我喜欢。我不检查I!=j我正在做一个额外的比较。这就是为什么我从循环中中断计数>=2。我假设每个元素存在一次。我仍然无法找出为什么我得到了错误的结果
public boolean anyDuplicates(int[] arr) {
for(int i=0; i<arr.length-1; i++) {
for(int j=i+1; j<arr.length; j++)
if (arr[i]==arr[j])
return true;
}
return false;
}