「算法」存在重复元素&存在重复元素II

编程

00217 存在重复元素

题目描述

给定一个整数数组,判断是否存在重复元素。

如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。

示例 1:

输入: [1,2,3,1]

输出: true

示例 2:

输入: [1,2,3,4]

输出: false

示例 3:

输入: [1,1,1,3,3,4,3,2,4,2]

输出: true

力扣地址

  • https://leetcode.com/problems/contains-duplicate/
  • https://leetcode-cn.com/problems/contains-duplicate/

解题报告

本题解由微信公众号小猿刷题提供, 错误之处, 欢迎指正.

使用散列表判断是否存在或者去重判断总长度都可以

  • 遍历过程中判断

/**

* 微信公众号"小猿刷题"

*/

public boolean containsDuplicate(int[] nums) {

Set<Integer> set = new HashSet<>(nums.length);

for (int x: nums) {

if (set.contains(x)) {

return true;

}

set.add(x);

}

return false;

}

  • 遍历完成后判断

/**

* 微信公众号"小猿刷题"

*/

public boolean containsDuplicate(int[] nums) {

Set<Integer> set = new HashSet();

for(int i = 0; i < nums.length; i ++){

set.add(nums[i]);

}

return set.size() != nums.length;

}

00219 存在重复元素 II

题目描述

给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 ij,使得 nums [i] = nums [j],并且 ij 的差的绝对值最大为 k

示例 1:

输入: nums = [1,2,3,1], k = 3

输出: true

示例 2:

输入: nums = [1,0,1,1], k = 1

输出: true

示例 3:

输入: nums = [1,2,3,1,2,3], k = 2

输出: false

力扣地址

  • https://leetcode.com/problems/contains-duplicate-ii/
  • https://leetcode-cn.com/problems/contains-duplicate-ii/

解题报告

本题解由微信公众号小猿刷题提供, 错误之处, 欢迎指正.

/**

* 微信公众号"小猿刷题"

*/

public boolean containsNearbyDuplicate(int[] nums, int k) {

Map<Integer, Integer> map = new HashMap<Integer, Integer>();

for (int i = 0; i < nums.length; i++) {

if (map.containsKey(nums[i])) {

if (i - map.get(nums[i]) <= k) {

return true;

}

}

map.put(nums[i], i);

}

return false;

}

以上是 「算法」存在重复元素&amp;存在重复元素II 的全部内容, 来源链接: utcz.com/z/512518.html

回到顶部