Java 创建一个函数,用于检查数组中的任何索引是否具有相同的值
我试图创建一个函数,检查数组中的任意两个索引是否具有相同的值。我意识到下面的代码只检查第一个索引是否与第二个相同,而不检查第一个索引是否与第三个、第四个相同,依此类推 我尝试在for循环中使用for循环来比较每个索引,但我不知道如何让它工作 由于我当前的实现,我还得到了一个索引越界异常,因为I+1超出了数组的长度 如果有人能帮我解决代码,并向我解释它是如何工作的,那就太好了!谢谢Java 创建一个函数,用于检查数组中的任何索引是否具有相同的值,java,arrays,indexing,Java,Arrays,Indexing,我试图创建一个函数,检查数组中的任意两个索引是否具有相同的值。我意识到下面的代码只检查第一个索引是否与第二个相同,而不检查第一个索引是否与第三个、第四个相同,依此类推 我尝试在for循环中使用for循环来比较每个索引,但我不知道如何让它工作 由于我当前的实现,我还得到了一个索引越界异常,因为I+1超出了数组的长度 如果有人能帮我解决代码,并向我解释它是如何工作的,那就太好了!谢谢 public class Values { public static void main (String[]a
public class Values {
public static void main (String[]args){
int[] A = {0,1,2,1,4};
for(int i = 0;i<=A.length;i++){
int n = i+1;
if(A[i] == A[n]){
System.out.println("Index " + i + " is the same value as index " + n);
System.out.println("Therefore, not all of the values in the array are different");
break;
}
}
System.out.println("All indexes in the array contain different values");
}
}
公共类值{
公共静态void main(字符串[]args){
int[]A={0,1,2,1,4};
for(inti=0;ifor(inti=0;i
for(int i=0;i
for(int i=0;i
for(int i=0;i
获得越界异常的原因是数组的长度为5(1,2,3,4,5个元素),但只能访问索引A[0]、…、A[4]-因此,您应该通过数组进行如下循环:for(int i=0;i获得越界异常的原因是数组的长度为5(1,2,3,4,5个元素)但是只有索引A[0],…,A[4]可以访问-因此您应该通过数组进行如下循环:for(int i=0;i获得越界异常的原因是因为数组的长度为5(1,2,3,4,5个元素),但只有索引A[0],…,A[4]可以访问-因此您应该通过数组进行如下循环:for(int i=0;i获得越界异常的原因是数组的长度为5(1,2,3,4,5个元素),但只能访问索引A[0],…,A[4]-因此,您应该通过数组进行如下循环:for(int i=0;i最有效的方法是首先排序,然后查找任何两个相邻元素是否相等:
Arrays.sort(A);
for (int i = 0; i < A.length - 1; i++)
if (A[i] == A[i+1])
// do something
Arrays.sort(A);
对于(int i=0;i
由于排序的原因,该算法的时间复杂度为O(n logn)
使用嵌套循环的时间复杂度为O(n2),即使是较小的数组大小也会对其产生影响。此外,代码更简单。最有效的方法是先排序,然后查找任意两个相邻元素是否相等:
Arrays.sort(A);
for (int i = 0; i < A.length - 1; i++)
if (A[i] == A[i+1])
// do something
Arrays.sort(A);
对于(int i=0;i
由于排序的原因,该算法的时间复杂度为O(n logn)
使用嵌套循环的时间复杂度为O(n2),即使是较小的数组大小也会对其产生影响。此外,代码更简单。最有效的方法是先排序,然后查找任意两个相邻元素是否相等:
Arrays.sort(A);
for (int i = 0; i < A.length - 1; i++)
if (A[i] == A[i+1])
// do something
Arrays.sort(A);
对于(int i=0;i
由于排序的原因,该算法的时间复杂度为O(n logn)
使用嵌套循环的时间复杂度为O(n2),即使是较小的数组大小也会对其产生影响。此外,代码更简单。最有效的方法是先排序,然后查找任意两个相邻元素是否相等:
Arrays.sort(A);
for (int i = 0; i < A.length - 1; i++)
if (A[i] == A[i+1])
// do something
Arrays.sort(A);
对于(int i=0;i
由于排序的原因,该算法的时间复杂度为O(n logn)
使用嵌套循环具有O(n2)时间复杂度,即使是适度的数组大小也会对其产生影响。此外,代码更简单。数组元素,您的意思是,不是索引?索引必须是唯一的。提示:您需要将[i]与[i+1]进行比较,还需要将[i+2]、[i+3]…A[length-1]进行比较。数组元素,你的意思是,不是索引?索引必须是唯一的。提示:你需要将[i]与[i+1]进行比较,但也需要将[i+2],A[i+3]…A[length-1]。数组元素,你的意思是,不是索引?索引必须是唯一的。提示:你需要将[i]与[i+1]进行比较,还需要将[i+2],A[i+3]…A[length-1]进行比较.数组元素,你的意思是,不是索引?索引必须是唯一的。提示:需要将[i]与[i+1]进行比较,但也需要将[i+2],A[i+3]…A[length-1]。两个循环都不需要从0到长度,看Sloth的答案。然后你不必检查i==j。两个循环都不需要从0到长度,看Sloth的答案。然后你不必检查i==j。两个循环都不需要从0到长度,看Sloth的答案。然后你不必检查i==j==j。两个循环都不需要从0到长度,看看Sloth的答案。然后你不必检查i==j。我提出了一个n(n+1)的算法/2次迭代。它不包含交换操作,只包含比较。您认为,n应该有多大才能使您的算法显示更好的基准?@sloth我运行了一些公平的基准测试:如果值的范围很窄(例如与数组长度相同),因此重复非常频繁,则嵌套循环的性能通常比排序+循环高10-100倍(数组越大,嵌套的性能就越好,而不是排序+循环)。但是,如果重复次数很少,则排序+循环会在大型数组中获胜。当值的范围约为500*数组长度时,会发生交叉,但在小数组大小(<200)时,嵌套循环仍然获胜。我提出了使用n(n+1)的算法/2次迭代。它不包含交换操作,只包含比较。您如何