Given an array of integers, find if the array contains any duplicates.
Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.
Example 1:
Input: [1,2,3,1] Output: true
Example 2:
Input: [1,2,3,4] Output: false
Example 3:
Input: [1,1,1,3,3,4,3,2,4,2] Output: true
思路
1.将数组快速排序
2.排序之后判断前后两个位置的值是否相等
void quick_sort(int* num, int l, int r){
if(l >= r) return ;
int head = l, tail = r, mid= num[l];
while(head < tail){
while(head < tail && num[tail] >= mid) tail--;
if(head < tail) num[head] = num[tail], head++;
while(head < tail && num[head] <= mid) head++;
if(head < tail) num[tail] = num[head], tail--;
}
num[head] = mid;
quick_sort(num, l, head - 1);
quick_sort(num, head + 1, r);
return ;
}
bool containsDuplicate(int* nums, int numsSize) {
quick_sort(nums, 0, numsSize - 1);
for(int i = 0; i < numsSize - 1; i++){
if(nums[i] == nums[i + 1]) return true;
}
return false;
}