存在重复元素小结
小结Leetcode当中存在重复元素
217.存在重复元素
题目描述
给定一个整数数组,判断是否存在重复元素。
如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。
示例 1:
1 | 输入: [1,2,3,1] |
示例 2:
1 | 输入: [1,2,3,4] |
示例 3:
1 | 输入: [1,1,1,3,3,4,3,2,4,2] |
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/contains-duplicate
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码
可以使用排序等方法,但是就这题来说,使用hash表最合适
1 | class Solution { |
219存在重复元素II
题目描述
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。
示例 1:
1 | 输入: nums = [1,2,3,1], k = 3 |
示例 2:
1 | 输入: nums = [1,0,1,1], k = 1 |
示例 3:
1 | 输入: nums = [1,2,3,1,2,3], k = 2 |
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/contains-duplicate-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码
同样可以使用哈希表维护一个滑动窗口
1 | class Solution { |
220.存在重复元素III
在整数数组 nums 中,是否存在两个下标 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值小于等于 t ,且满足 i 和 j 的差的绝对值也小于等于 ķ 。
如果存在则返回 true,不存在返回 false。
示例 1:
1 | 输入: nums = [1,2,3,1], k = 3, t = 0 |
示例 2:
1 | 输入: nums = [1,0,1,1], k = 1, t = 2 |
示例 3:
1 | 输入: nums = [1,5,9,1,5,9], k = 2, t = 3 |
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/contains-duplicate-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码
这题在第二题的基础上又加了一些条件,比如:差的绝对值小于等于 t
这个让我们使用hash表进行遍历不是很方便,所以我们使用二叉搜索树进行处理
1 | class Solution { |