给你一个长度为 n
的整数数组 nums
,请你返回 nums
中最 接近 0
的数字。如果有多个答案,请你返回它们中的 最大值 。
看到这个题,我们首先应该怎么做呢?
创建一个变量max,用来记录最接近0的数,然后我们在创建一个变量flag,用来记录放进去max的元素的下标,然后我们便按从小到大的顺序排列整个数组,如果遇到该元素减0的绝对值小于max,就将该绝对值放进max,并且替换掉原来的flag。直到遍历完整个数组。最后在用flag所存取的下标找到该元素,并返回该元素。以下是代码
int cmpfunc (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
int findClosestNumber(int* nums, int numsSize){
qsort(nums,numsSize,sizeof(int),cmpfunc);
int i=0;
int flag=0;
int max=abs(nums[0]-0);
for(i=0;i<numsSize;i++)
{
if(max>=abs(nums[i]-0))
{
max=abs(nums[i]-0);
flag=i;
}
}
return nums[flag];
}