其他分享
首页 > 其他分享> > LeetCode力扣(数组01:存在重复元素)

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

思路:

代码:

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;
	}

}

运行结果:

image-20220913120858128

提交结果 执行用时 内存消耗 语言 提交时间 备注
通过 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