【力扣】每日一题—第268题,丢失的数字
我感觉这个代码我一点毛病没有
但是还是反思自己,开始我没有初始化函数;
酿成大错
就是上面的情况,
题目:
给定一个包含 [0, n]
中 n
个数的数组 nums
,找出 [0, n]
这个范围内没有出现在数组中的那个数。
思路:
定义一个数组比给定数组多一个内存空间,之后初始化数组全部赋值为1;但是要考虑丢失的数字是1的情况了,我就判断了一下(后来想想也可以省略),之后遍历,给定数组存在一个数,该数值下标的新建数组减一,最后创建的数组应该是除了丢失数字下标的数组其他下标数组值全零。(应该说复杂了,见谅)
修改后最终代码:
int missingNumber(int* nums, int numsSize) {
int num[numsSize+1];
for(int i=0;i<numsSize+1;i++)
{
num[i]=1;
}
for(int i=0;i<numsSize;i++)
{
num[nums[i]]--;
}
for(int i=0;i<numsSize;i++)
{
if(nums[i]==1)
{
goto lable;
}
}
return 1;
lable:
int wy=0;
for(int i=0;i<numsSize+1;i++)
{
if(num[i]!=0)
{
return i;
break;
}
else if(num[i]!=1)
{
wy++;
}
}
if(wy==numsSize)
{
return numsSize;
}
return 0;
}
再接再励吧!!!!!!!
脑袋空空。
如果有更好的方案,请赐教,感谢!