import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/**
* 给定一个整数数组,判断是否存在重复元素。
* @author 汤小萌
*
*/
public class Demo06 {
// 用时18ms
public static boolean containsDuplicate(int[] nums) {
if(null != nums && nums.length > 1) {
// 创建一个HashSet
Set<Integer> set = new HashSet<>(nums.length);
for(int i : nums) {
// 如果元素已经存在则返回true;
if(set.contains(i)) {
return true;
} else {
set.add(i);
}
}
}
return false;
}
// 用时17ms
// 这种方法用的时间更少(只是对数组进行了排序,在进行比较)
// 如果没有比较久使用这个比较算法是错误的(因为排序了,数组里面的数据才有连续性)
public static boolean containsDuplicate01(int[] nums) {
Arrays.sort(nums);
for(int i = 0; i < nums.length; i++) {
if(nums[i] == nums[i+1]) {
return true;
}
}
return false;
}
// 这个算法是利用了Map不能存放相同的键的特性
// 用时15ms
public static boolean containsDuplicate02(int[] nums) {
Map<Integer, Integer> map = new HashMap<>();
for(int i : nums) {
// 第一次存进去的元素,如果不存在则返回null
if(map.put(i, i) != null) {
// 一旦返回的是一个非空,就代表map里面一定有相同的元素,直接返回true
return true;
}
}
// 所有元素遍历结束,没有找到相同的,返回false
return false;
}
}
给定一个整数数组,判断是否存在重复元素。
最新推荐文章于 2024-07-08 20:49:05 发布