计算数组中元素取绝对值后不重复的个数

时间复杂度 O(N)

空间复杂度 O(N)

#include<stdio.h>

int solution(int A[], int N) {

    // write your code here…

    if (N <=0)

        return -1;  

    int A1[12500], i, ret = 0;

    for (i=0; i<12500; i++){

        A1[i] = 0;          

    }                           

    int x=0, y=0;   

    for (i=0; i<N; i++){

        if((A[i]) < 0)              

            A[i] = abs(A[i]);                       

        x = (A[i])/31;                      

        y = (A[i])%31;                              

        if((A1[x] & (1<<y)) == 0){                          

            A1[x] |= (1<<y);                                                

            ret++;                                                                      

        }                                                                                       

    }                                                           

    return ret;             

}

void main (){

    int A[6] = {-5, -3, -1, 0, 3, 6};

    solution(&A,6);

}

点赞