题目描述:
给你一个整数数组
nums
。如果任一值在数组中出现 至少两次 ,返回true
;如果数组中每个元素互不相同,返回false
。示例 1:
输入:nums = [1,2,3,1] 输出:true示例 2:
输入:nums = [1,2,3,4] 输出:false示例 3:
输入:nums = [1,1,1,3,3,4,3,2,4,2] 输出:true提示:
![]()
代码:
bool containsDuplicate(int* nums, int numsSize){
//定义一个数组2,并初始化
int nums2[numsSize];
int j = 0,length = 0;//length用来记录数组2最新存放的元素的下标
for(j = 0; j< numsSize; j++ ){
nums2[j] = 0;
}
for(int i= 0; i< numsSize; i++)
{
j = 0;
//如果原数组中nums[i]等于新数组2中的nums2[j] ,则存在重复元素
while(j < length){
if(nums[i] == nums2[j]) return true;
else j++;
}
//否则,将nums[i]存入到新数组2中
nums2[length] = nums[i];
length +=1;
}
return false;
// //初始化一个数组2,有n+1个元素,值全部为0
// int nums2[numsSize];
// int j = 0;
// for(j= 0 ; j<numsSize ; j++){
// nums2[j] = 0;
// }
// for(int i = 0; i < numsSize; i++ ){
// //j用来暂存原数组中元素
// j = nums[i];
// //如果数组2中第j个位置为0,就在令nums2[j] = j,否则说明存在重复元素
// if(nums2[j] == 0) nums2[j] = j;
// else
// return true;
// }
// return false;
}
运行结果:
下边注释掉的是想的第二种方法,没成功,因为nums[i]的值可能会很大,超出数组范围。