给你一个整数数组 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
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/contains-duplicate
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目挺简单的,关键在于如何实现。
一开始采用了hashmap,结果效率有点低,看了官方解外加jdk帮助文档后才发现还可以用set来实现哈希表。
代码如下:
hashmap
1 class Solution { 2 public boolean containsDuplicate(int[] nums) { 3 Map<Integer, Integer> map = new HashMap<>(); 4 for (int i = 0; i < nums.length; i ++) { 5 if (map.containsKey(nums[i])) { 6 return true; 7 } else { 8 map.put(nums[i], i); 9 } 10 } 11 return false; 12 } 13 }
hashset
1 class Solution { 2 public boolean containsDuplicate(int[] nums) { 3 Set<Integer> set = new HashSet<>(); 4 for (int x : nums) { 5 if (!set.add(x)) { 6 return true; 7 } 8 } 9 return false; 10 } 11 }
运行结果:
hashmap
hashset
标签:217,return,nums,int,示例,---,力扣,false,true From: https://www.cnblogs.com/allWu/p/17004836.html