存在重复
给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。
示例 1:
输入: [1,2,3,1]
输出: true
示例 2:
输入: [1,2,3,4]
输出: false
示例 3:
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true
思路:
首先对数组进行排序,如果存在重复,那么肯定会相邻。
再两两相减,如果为0则说明相等。
代码
#include <stdio.h>
#include <stdlib.h>
int containsDuplicate(int* nums, int numsSize);
int cmp(const void *a, const void *b);
int main()
{
int array[10] = {1,1,1,3,3,4,3,2,4,2};
int a = containsDuplicate(array, 10);
printf("===> %d\n", a);
return 0;
}
int cmp(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
int containsDuplicate(int* nums, int numsSize)
{
qsort(nums, numsSize, sizeof(nums[0]), cmp);
int i = 0;
int temp = 1;
for (i = 1; i < numsSize; i++)
{
temp = nums[i] - nums[i - 1];
if (temp == 0)
return 1;
}
return 0;
}