提交 427425dc 编写于 作者: 门心叼龙's avatar 门心叼龙

code prefect

上级 905fcf27
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
</value> </value>
</option> </option>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">
......
...@@ -10,24 +10,53 @@ import java.util.HashSet; ...@@ -10,24 +10,53 @@ import java.util.HashSet;
* Update: <br> * Update: <br>
*/ */
public class MainAlgorithm { public class MainAlgorithm {
public static void main(String[] arg) { public static void main(String[] arg) {
int[] arr = {11, 3, 10, 11, 34, 5, 21}; int[] arr = {11, 3, 10, 11, 34, 5, 21};
System.out.println(checkRepeat(arr)); System.out.println(checkRepeat(arr));
} }
// 查找一个数组里面有没有重复元素
private static boolean checkRepeat(int[] arr) {
// 1.声明一个散列表表
// 2.遍历这个数组
// 3.对遍历的元素依次进行判断,如果散列表里面没有就往散列表里面塞,有就直接退出了
HashSet<Integer> hashSet = new HashSet<>();
for (int i = 0; i < arr.length; i++) {
if (hashSet.contains(arr[i])) {
return true;
} else {
hashSet.add(arr[i]);
}
}
return false;
}
// 查找一个数组里面有没有重复元素 //解法2:先对数组中的元素进行排序,排序完毕再两两对比
private static boolean checkRepeat(int[] arr) { /* 解法3:
// 1.声明一个散列表表 * 遍历数组,当遍历到下标为i的数字时,首先比较arr[i]是否等于i
// 2.遍历这个数组 * 如果arr[i]等于i,则遍历下一个数字;
// 3.对遍历的元素依次进行判断,如果散列表里面没有就往散列表里面塞,有就直接退出了 * 如果arr[i]不等于i,且arr[arr[i]]不等于arr[i],则交换这两个元素的值;
HashSet<Integer> hashSet = new HashSet<>(); * 如果arr[i]不等于i,且arr[arr[i]]等于arr[i],则该元素为重复数字
for (int i = 0; i < arr.length; i++) { */
if (hashSet.contains(arr[i])) { public static boolean duplicate(int numbers[], int length, int[] duplication) {
return true; if (numbers == null || numbers.length < 2 || length < 2 ||
} else { duplication == null || duplication.length == 0)
hashSet.add(arr[i]); return false;
} boolean hasDuplicate = false;
int i = 0;
while (i < length) {
int m = numbers[i];
if (m == i) {
++i;
} else if (numbers[m] != m) {
numbers[i] = numbers[m];
numbers[m] = m;
} else {
hasDuplicate = true;
duplication[0] = m;
break;
}
}
return hasDuplicate;
} }
return false;
}
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册