判斷是否存在重複元素

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;

}


分享到:


相關文章: