LeetCode Contains Duplicate

int comp (const void * a, const void * b) {
   return ( *(int*)a - *(int*)b );
}


bool containsDuplicate(int* nums, int numsSize) {
    // Sort
    qsort(nums, numsSize, sizeof(int), comp);

    // Loop
    for (int i = 0; i < numsSize - 1; i++) {
        if (nums[i] == nums[i+1]) return true;
    }

    return false;
}

以上为偷学的新技能。

qsort函数stdlib.h文件中,函数原型为

void qsort(void *base,size_t nelem,size_t width,int (*Comp)(const void *,const void *));

*base 为要排序的数组

nelem 为要排序的数组的长度

width 为数组元素的大小(一字节为单位)

默认是从小到大排序的!


bool containsDuplicate(int* nums, int numsSize) {
    quicksort(nums,0,numsSize-1);
    for(int i=0;i<numsSize-1;i++)
    {
        if(nums[i]==nums[i++])
            return  true;
    }
    return false;
}
void quiksort(int* a,int low,int high)
{
    int i = low;
    int j = high;  
    int temp = a[i]; 
  
    if( low < high)
    {          
        while(i < j) 
        {
            while((a[j] >= temp) && (i < j))
            { 
                j--; 
            }
            a[i] = a[j];
            while((a[i] <= temp) && (i < j))
            {
                i++; 
            }  
            a[j]= a[i];
        }
        a[i] = temp;
        quiksort(a,low,i-1);
        quiksort(a,j+1,high);
    }
    else
    {
        return;
    }
}


看我的方法笨拙,固我卡死在栈溢出。


C语言,2016/2/13


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值