LeetCode力扣(数组01:存在重复元素)
作者:互联网
LeetCode力扣(数组01:存在重复元素)
题目:
给你一个整数数组 nums
。如果任一值在数组中出现 至少两次 ,返回 true
;如果数组中每个元素互不相同,返回 false
。
示例:
示例 1:
输入:nums = [1,2,3,1]
输出:true
示例 2:
输入:nums = [1,2,3,4]
输出:false
示例 3:
输入:nums = [1,1,1,3,3,4,3,2,4,2]
输出:true
提示:
1 <= nums.length <= 105
-109 <= nums[i] <= 109
思路:
- 方法一:先排序,后比较
- 方法二:利用集合的不可重复性(比如set和map的键)
- 方法三:暴力破解
代码:
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
public class Array01 {
public static void main(String[] args) {
int[] nums = { 1, 1, 1, 3, 3, 4, 3, 2, 4, 2 };
System.out.println(containsDuplicate(nums));
}
// 利用Array的Sort排序,然后遍历比对相邻两数
public static boolean containsDuplicate(int[] nums) {
Arrays.sort(nums);
for (int i = 0; i < nums.length - 1; i++) {
if ((nums[i] ^ nums[i + 1]) == 0) {
return true;
}
}
return false;
}
// 利用map集合键不可重复特点
public static boolean containsDuplicate4(int[] nums) {
Map<Integer, Integer> map = new HashMap<>();
for (int num : nums) {
if (map.containsKey(num)) {
return true;
}
map.put(num, null);
}
return false;
}
// 利用set集合不可重复特点
public static boolean containsDuplicat3(int[] nums) {
HashSet<Integer> set = new HashSet<>();
for (int num : nums) {
if (!set.add(num)) {
return true;
}
}
return false;
}
// 利用set集合不可重复特点 (还有无序,无下标特点)
public static boolean containsDuplicate2(int[] nums) {
HashSet<Integer> set = new HashSet<>();
for (int num : nums) {
set.add(num);
}
return set.size() == nums.length ? false : true;
}
// 利用双重循环暴力
public static boolean containsDuplicate1(int[] nums) {
for (int i = 0; i < nums.length - 1; i++) { //少比较一次
for (int j = i + 1; j < nums.length; j++) {
if (nums[i] == nums[j]) {
return true;
}
}
}
return false;
}
}
运行结果:
提交结果 | 执行用时 | 内存消耗 | 语言 | 提交时间 | 备注 |
---|---|---|---|---|---|
通过 | 14 ms | 53.4 MB | Java | 2022/09/13 12:05 | 利用hashset不可重复性(和原串长度比较修改版) |
通过 | 19 ms | 55.4 MB | Java | 2022/09/13 11:44 | 利用Arrays工具类的内置排序函数 |
通过 | 8 ms | 53.6 MB | Java | 2022/09/13 11:14 | 利用hashmap键不可重复性的特点 |
通过 | 5 ms | 49.4 MB | Java | 2022/09/13 11:00 | 利用hashset不可重复性(修改版,提前退出) |
通过 | 14 ms | 52.8 MB | Java | 2022/09/13 10:56 | 利用hashset不可重复性(和原串长度比较) |
通过 | 990 ms | 54.9 MB | Java | 2022/09/13 10:43 | 暴力破解2(第一个多循环了一次) |
通过 | 747 ms | 55.3 MB | Java | 2022/09/13 10:34 | 暴力破解 |
END
标签:01,return,nums,int,num,力扣,set,true,LeetCode 来源: https://www.cnblogs.com/lyluoye/p/16688743.html