我正在尝试创建一个函数来检查数组中的任何两个索引是否具有相同的值。我已经意识到下面的代码只检查第一个索引是否与第二个索引相同,而不是检查第一个索引是否与第三个,第四个索引相同,等等。
我尝试在for循环中使用for循环来比较每个索引,但我无法弄清楚如何让它工作。
由于我目前的实现,由于i + 1超出了数组的长度,我也得到了索引超出范围的异常。
如果有人可以帮助解决代码并向我解释它是如何工作的那将是很棒的!谢谢!
var g=[1st value,2nd value,3rd value] => [incremented first value,first value,second value]
答案 0 :(得分:2)
for(int i = 0; i < A.length - 1; i++){
for(int j = i + 1; j < A.length; j++){
if(A[i] == A[j]){
//do something
}
}
}
答案 1 :(得分:1)
最有效的方法是先排序,然后查找是否有任何两个相邻元素相等:
Arrays.sort(A);
for (int i = 0; i < A.length - 1; i++)
if (A[i] == A[i+1])
// do something
该算法具有O(n log n)时间复杂度 - 由于排序。
使用嵌套循环具有O(n 2 )时间复杂度,即使是适度的数组大小也会开始受到伤害。加上代码更简单。