217. Contains Duplicate
Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct.
Example 1:
Input: nums = [1,2,3,1]
Output: true
Example 2:
Input: nums = [1,2,3,4]
Output: false
Example 3:
Input: nums = [1,1,1,3,3,4,3,2,4,2]
Output: true
Constraints:
- 1 < = n u m s . l e n g t h < = 1 0 5 1 <= nums.length <= 10^5 1<=nums.length<=105
- − 109 < = n u m s [ i ] < = 1 0 9 -109 <= nums[i] <= 10^9 −109<=nums[i]<=109
From: LeetCode
Link: 217. Contains Duplicate
Solution:
Ideas:
- Sorting the Array:
- The qsort function is used to sort the array. This makes it easy to check for duplicates by comparing each element to its next neighbor.
- The compare function is a helper function for qsort to define how two elements should be compared.
- Checking for Duplicates:
- After sorting, the array is traversed once. If any element is the same as the one before it, the function returns true, indicating that a duplicate exists.
- If no duplicates are found after traversing the array, the function returns false.
Code:
int compare(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
bool containsDuplicate(int* nums, int numsSize) {
if (numsSize < 2) {
return false;
}
// Sort the array
qsort(nums, numsSize, sizeof(int), compare);
// Check for duplicates in the sorted array
for (int i = 1; i < numsSize; i++) {
if (nums[i] == nums[i - 1]) {
return true;
}
}
return false;
}