leetcode-初级-存在重复元素
给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。
/*时间复杂度很大
*/
bool containsDuplicate(int* nums, int numsSize) {
int i,j;
for(i=0;
i
【leetcode-初级-存在重复元素】
//时间复杂度更小
bool containsDuplicate(int* nums, int numsSize)
{
int max = nums[0], min = nums[0];
if(numsSize <= 1)
return false;
for(int i = 1;
i < numsSize;
i++)
{
if(nums[i] > max)
max = nums[i];
if(nums[i] < min)
min = nums[i];
}// 哈希查找
int hash_size = max - min + 1;
int hash[hash_size];
//将数组的跨度作为数组for(int i = 0;
i < hash_size;
i ++)
hash[i] = INT_MIN;
for(int i = 0;
i < numsSize;
i++)
{
if(hash[nums[i] - min] != INT_MIN)//一旦有相同的元素出现(即与min的差相等),跨度数组的值便会改变,说明有重复元素
return true;
hash[nums[i] - min] = i;
}return false;
}
推荐阅读
- 2018.03.18
- 在这个时代每个女性都应该用个性的服装来证明自己的存在
- 二叉树路径节点关键值和等于目标值(LeetCode--112&LeetCode--113)
- 有你的世界仍存在
- 离骚
- 30.刷存在感
- 初级会计实务-财产清查
- 倾诉
- 基金初级训练营第49期(宝妈的逆袭之路)
- 考研倒数第26天Ⅰ因为记得,所以存在