算法"/>
跟英雄哥学算法
645. 错误的集合 - 力扣(LeetCode) (leetcode-cn.com)
/*** Note: The returned array must be malloced, assume caller calls free().*/int cmp (const void *pa,const void*pb){return *(int*)pa - *(int*)pb;}
int* findErrorNums(int* nums, int numsSize, int* returnSize){int*ret =(int*)malloc(sizeof(int)*2);//一共两个元素我们就开辟两个动态内存空间qsort(nums,numsSize,sizeof(int),cmp);//排列成升序便于相邻两元素重复利于找出int i=0;int bfr =0;//定义一个本元素前面的元素,为了防止第一个元素就是丢失的数字我们将最开始设置为0for(i=0;i<numsSize;i++)//遍历整个数组{int tmp =nums[i];//定义一个变量防止本元素(防止循环体内改变循环变量)if(tmp==bfr){//两个元素相等,重复元素放在数组第一个位置ret[0]=bfr;}else if(tmp - bfr >1){//如果是错误元素则相邻两元素肯定相差2,前面的元素+1就是丢失的数字ret[1] = bfr+1;}bfr = nums[i];//查找完一次,查找下一个,然后将前面元素放置本元素,将本元素+1到下一个元素}if(nums[numsSize-1]!=numsSize)//如果最终都没有找到丢失的数字,那就是最后一个数字{ret[1] = numsSize;}*returnSize =2;return ret;
}
更多推荐
跟英雄哥学算法
发布评论