ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LeetCode力扣(数组01:存在重复元素)

2022-09-13 12:32:03  阅读:382  来源: 互联网

标签:01 return nums int num 力扣 set true LeetCode


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

}

运行结果:

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有