利用下位数组,不值当写博客。回头git搞好,代码片存下删了。
static inline void setbit_t(unsigned int arr[], unsigned int dig)
{
*(arr+(dig>>5)) |= (0x1 << dig%32);
}
static inline int issetbit_t(unsigned int arr[], unsigned int dig) // has set return 1, or return 0
{
return *(arr+(dig>>5)) &= (0x1 << dig%32);
}
unsigned int is_duparr(unsigned int arr[], unsigned int n, unsigned int max)
{
unsigned int i;
unsigned int * bitarr = (unsigned int *)malloc((max<<5+1)*sizeof(unsigned int));
memset(bitarr, 0, n * sizeof(unsigned int));
for(i = 0; i < n; i++, arr++)
{
if(issetbit_t(bitarr, *arr))
return *arr;
else
setbit_t(bitarr, *arr);
}
free(bitarr);
return 0;
}
posted on
浙公网安备 33010602011771号