bool containsDuplicate(int* nums, int numsSize) {
if(numsSize == 0 || numsSize == 1)
return false;
int temp[numsSize];
temp[0] = nums[0];
int count = 1;
for(int i=1;i<numsSize;i++){
for(int j=0;j<count;j++){
if(temp[j] == nums[i])
return true;
}
temp[count++] = nums[i];
}
return false;
}
上面那个速度太慢了,想建立哈希表,结果调试了几次发现几个提交点还是有点刁钻的,函数要换个就先放弃了,回头再做。就先换成排序再对数组筛查了。
c里面对qsort不会用,就自己写了快排,提交之后发现速度提升的不是很明显。。。快了500ms
int Partition(int A[],int left,int right){
int temp = A[left];
while (left < right) {
while (left < right && A[right] > temp)
right--;
A[left] = A[right];
while (left <right && A[left] <= temp)
left++;
A[right] = A[left];
}
A[left] = temp;
return left;
}
void quick_sort(int A[],int left,int right){
if (left < right) {
int pos = Partition(A, left, right);
quick_sort(A, left, pos-1);
quick_sort(A, pos+1, right);
}
}
bool containsDuplicate(int* nums, int numsSize) {
if(numsSize == 0 || numsSize == 1)
return false;
quick_sort(nums,0,numsSize-1);
for(int i=0;i<numsSize-1;i++){
if(nums[i] == nums[i+1])
return true;
}
return false;
}
感觉换成c++ 用set是最快的