力扣初级算法 存在重复元素

bool containsDuplicate(int* nums, int numsSize) {
/* if(numsSize==1)return false;
int i,j;//循环变量
int flag=0;//标志变量
for(i=0;i {
for(j=i+1;j {
if(nums[i]==nums[j])
{
flag=1;
break;
}
}
if(j }

if(flag==1)return true;
else return false;
}
没有用到什么算法思想,超时。
用插入排序,可以解决。
 int i,j;//循环变量
int temp;//中间变量
for(i=1;i0&&nums[j-1]>temp;j--)
        nums[j]=nums[j-1];
    nums[j]=temp;
    if(nums[j-1]==nums[j]&&j>0)return true;
}
return false;
注意,判断重复元素时j要大于0才有可能重复。因为如果j=0,那说明a[j]已经是最小的(第一个元素),前面肯定不可能有其他元素了,因此也不可能重复。也即,插入排序如果有重复的元素,那么一定是插在原先那个元素后面,判断条件是a[j]与a[j-1]是否相等。

你可能感兴趣的:(力扣初级算法 存在重复元素)