1、判斷是否存在重複元素。
給定一個整數數組,判斷是否存在重複元素。
如果任何值在數組中出現至少兩次,函數返回 true。如果數組中每個元素都不相同,則返回 false
方法一:直接使用for循環遍歷。此方法在leetcode提交會超時
bool containsDuplicate(int* nums, int numsSize){
int i = 0, j = 0;
bool isDuplicate = false;
if(numsSize <= 0)
return isDuplicate;
for(;i < numsSize; i++){
for(j = i+1; j < numsSize; j++){
if(nums[i] == nums[j]){
isDuplicate = true;
break;
}
}
if(isDuplicate)
break;
}
return isDuplicate;
}
方法二:先使用選擇排序對序列進行排序,再判斷相鄰兩個數是否相等。此方法在leetcode提交會超時
void SelectSort(int** nums, int numsSize){
int i = 0,j = 0,minIndex = 0;
int temp = 0;
for(i = 0; i < numsSize; i++){
minIndex = i;
for(j = i+1; j < numsSize; j++){
if((*nums)[j] < (*nums)[minIndex]){
minIndex = j;
}
}
if(minIndex != i){
temp = (*nums)[i];
(*nums)[i] = (*nums)[minIndex];
(*nums)[minIndex] = temp;
}
}
}
bool containsDuplicate(int* nums, int numsSize){
int i = 0;
bool isDuplicate = false;
if(numsSize <= 0){
return isDuplicate;
}
SelectSort(&nums, numsSize);
for(i = 0; i < numsSize - 1; i++){
if(nums[i] == nums[i+1]){
return true;
}
}
return false;
}
方法三:使用C庫中qsort函數排序,再判斷相鄰兩個數是否相等。執行用時:28 ms
int comp(const void *a, const void *b)
{
return *(int*)a - *(int*)b;
}
bool containsDuplicate(int* nums, int numsSize){
int i = 0;
bool isDuplicate = false;
if(numsSize <= 0){
return isDuplicate;
}
qsort(nums, numsSize, sizeof(int), comp);
for(i = 0; i < numsSize - 1; i++){
if(nums[i] == nums[i+1]){
return true;
}
}
return false;
}
閱讀更多 r1Ov凬 的文章
關鍵字: return isDuplicate 超時