leetCode-442-数组中重复的数据-C语言

    xiaoxiao2023-10-17  168

    /** * 算法思想: * 遍历数组,将arr[i]-1为下标的元素设置为其相反数,等下次发现某元素<0时,则说明该 * 元素被访问过,转换为其本身数后入栈即可。 */ int abs(int a){ return a>0 ? a:-a; } int* findDuplicates(int* nums, int numsSize, int* returnSize){ int *ret = (int *)malloc(sizeof(int) * numsSize); int ret_index = 0; int i; for(i=0; i<numsSize; i++){ if(nums[abs(nums[i])-1] > 0) nums[abs(nums[i])-1] = -1 * nums[abs(nums[i])-1]; else ret[ret_index++] = abs(nums[i]); } *returnSize = ret_index; return ret; }
    最新回复(0)