题目描述
给定一个整数数组,判断是否存在重复元素。
如果任意一值在数组中出现至少两次,函数返回 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
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/contains-duplicate 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
白话题目:
数组中的一些数,里面要是任意两个相同了,就返回true。全都不同的话显示false。
算法:
(1)快排
(2)因为任意两个只要相同了,就可以返回true了,所以这个问题就好处理了一些。
详细解释关注 B站 【C语言全代码】学渣带你刷Leetcode 不走丢 https://www.bilibili.com/video/BV1C7411y7gB
C语言完全代码
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int comp(const void *a,const void *b){
return *(int *)a-*(int*)b;
}
bool containsDuplicate(int* nums, int numsSize){
int i;
qsort(nums,numsSize,sizeof(int),comp); //快速排序
for(i=0;i<numsSize-1;i++){
if(nums[i]==nums[i+1]) return true;
}
return false;
}
int main()
{
int numsSize;
scanf("%d",&numsSize);
int nums[numsSize];
int i=0;
for(i=0; i<numsSize; i++)
{
scanf("%d",&nums[i]);
}
int result;
result=containsDuplicate(nums, numsSize);
printf("%d\n",result);
return 0;
}