范圍已知的時(shí)候可以直接用數(shù)組搞定趟庄,否則用哈希窿克。
數(shù)組法:
/**
*
* @title: duplicate
* @description: 查找數(shù)組中重復(fù)的數(shù)字,數(shù)字范圍0~n
*/
public static int duplicate(int[] arr, int n) {
if(arr == null || arr.length<= 0) {
return 0;
}
int[] temp = new int[n+1];
for(int i = 0; i < arr.length; i++) {
if(temp[arr[i]] != 0) {
return arr[i];
}else {
temp[arr[i]] = 1;
}
}
return 0;
}
哈希法:
/**
*
* @title: duplicate
* @description: 查找數(shù)組中重復(fù)的數(shù)字
*/
public static int duplicate(int[] arr) {
if(arr == null || arr.length<= 0) {
return -1;
}
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for(int i = 0; i < arr.length; i++) {
if(map.containsKey(arr[i])) {
return arr[i];
}else {
map.put(arr[i], 1);
}
}
return -1;
}
字符串中重復(fù)的字母:
/**
*
* @title: duplicate
* @description: 查找字符串中的重復(fù)字符
*/
public static char duplicate(String str) {
char[] arr = str.toCharArray();
int[] temp = new int[128];
for(int i = 0 ;i < str.length(); i++) {
if(temp[arr[i]] != 0) {
return arr[i];
}else {
temp[arr[i]] = 1;
}
}
return 0;
}