免费优化网站建设,科技的意义和价值,中国住建网的官网,wordpress wp-pollshellohello~这里是土土数据结构学习笔记#x1f973;#x1f973; #x1f4a5;个人主页#xff1a;大耳朵土土垚的博客 #x1f4a5;所属专栏#xff1a;C语言函数实现 感谢大家的观看与支持#x1f339;#x1f339;#x1f339; 有问题可以写在评论区或者私信我哦… hellohello~这里是土土数据结构学习笔记 个人主页大耳朵土土垚的博客 所属专栏C语言函数实现 感谢大家的观看与支持 有问题可以写在评论区或者私信我哦~ 1.消失的数字分析 数组nums包含从0到n的所有整数但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗 思路1 先求出数组所有数的和sum1因为是0~n连续的只要一个数没有两个所有我们求出所有两个0 ~n的数的和sum2再将它们相减即可得到消失的数字
图解如下 思路2 利用位操作符来求解详情点击这里查看 位与移位操作符详解 按位异或操作符相同为假相异为真 而两个相同的数字按位异或得出的结果却是0因为它们所有位都相同 2.消失的数字完整代码求解
方法一
int missingNumber(int* nums, int numsSize)
{
int sum 0;
for(int i 0; inumsSize;i)//数组所有数求和
{sum*(numsi);
}
for(int i 0; inumsSize;i)//假设0~n的数都有两个
{sum-i;//少了一个数的和减去没有少的得到消失的数字的负数
}
return -sum;//返回相反数即可
}
结果如下 这里的时间复杂度为O(n),符合题意上面for循环为n下面也为n加起来2n也就是O(n). 方法二
int missingNumber(int* nums, int numsSize)
{int res 0;for (int i 0; i numsSize; i) {res ^ nums[i];}for (int i 0; i numsSize; i) {res ^ i;}return res;
} 同样这里的时间复杂度为O(n),符合题意上面for循环为n下面也为n加起来2n也就是O(n). 3.结语 ✨✨以上就是消失的数字的两种题解啦~ 一种是求和求解另一种是利用按位异或的特点来求解两种方法有异曲同工之处并且时间复杂度都为O(n)完全符合题意大家都get到了吗 以上就是C语言消失的数字所有内容啦~ 大家有什么问题或者更好的方法欢迎写在评论区或私信我哦~ 完结撒花~