在一个长度为n的数组里的所有数字都在 0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如:如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出的是重复的数字2或者3 ,图我画不出来,只能借助下面的大佬帮我画好图:
思路如下:
转自:https://www.cnblogs.com/Czc963239044/p/6961511.html
下面用java代码实现如下:
import
java.util.Scanner;
public
class
Main {
public
static
void
getRepeateNum(
int
[] num) {
int
NumChange;
System.out.println(
"重复数字是:"
);
for
(
int
index =
0
; index < num.length; index++) {
while
(num[index] != index) {
if
(num[index] == num[num[index]]) {
System.out.print(num[index]+
" "
);
break
;
}
else
{
NumChange = num[num[index]];
num[num[index]] = num[index];
num[index] = NumChange;
}
}
}
}
public
static
void
main(String[] args) {
Scanner scanner =
new
Scanner(System.in);
int
[] num =
new
int
[
5
];
//数组长度可以自己定义
System.out.println(
"请输入一组数据:"
);
for
(
int
i =
0
; i <
5
; i++) {
num[i] = scanner.nextInt();
}
getRepeateNum(num);
}
}