Leetcode217. 存在重复元素
题目:
给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。
题解:
方案一:先排序,查看两个相邻元素是否相等。
方案二:使用hashSet
scala代码如下:
/**
* 排序方法
* 时间复杂度 : O(nlogn)。
*
* @param nums
* @return
*/
def containsDuplicate(nums: Array[Int]): Boolean = {
var flag = false
util.Arrays.sort(nums)
for (i <- 0 until nums.length) {
if (nums(i) == nums(i + 1)) flag = true
}
flag
}
/**
* hash方式
* 时间复杂度 : O(n)。
*
* @param nums
* @return
*/
def containsDuplicate2(nums: Array[Int]): Boolean = {
var flag = true
var result = false
val set = new util.HashSet[Int]()
for (num <- nums; if (flag)) {
if (set.contains(num)) {
result = true
flag = false
} else {
set.add(num)
}
}
flag
}
本文详细解析了LeetCode217题“存在重复元素”的两种解决方案:一种是通过排序后检查相邻元素来判断是否有重复,时间复杂度为O(nlogn);另一种是利用HashSet进行快速查找,时间复杂度为O(n)。通过对比,读者可以理解不同算法的优劣。
491

被折叠的 条评论
为什么被折叠?



