网站设计 上海,做网站都需要买什么,企业营销策划实训报告,无锡市建设局网站大家好#xff0c;我是苏貝#xff0c;本篇博客带大家刷题#xff0c;如果你觉得我写的还不错的话#xff0c;可以给我一个赞#x1f44d;吗#xff0c;感谢❤️ 目录 1.暴力求解法2.采用异或的方法#xff08;同单身狗问题#xff09;3.先求和再减去数组元素 点击查看… 大家好我是苏貝本篇博客带大家刷题如果你觉得我写的还不错的话可以给我一个赞吗感谢❤️ 目录 1.暴力求解法2.采用异或的方法同单身狗问题3.先求和再减去数组元素 点击查看题目 1.暴力求解法
通过2个for循环遍历查找0-n中缺少的数字比较简单不写时间复杂度为O(N^2) 2.采用异或的方法同单身狗问题
点击去了解异或位置在④.3 异或两个整数的相同位置相同为0不同为1二进制易知a^ a0a^ 0a具有交换律所以a^ b^ aa^ a^ b0^bb。 在本题中先使x0因为0^ 任何数任何数本身再让x与0-nn是数组的元素个数的所有数字异或再让x与nums数组的全部元素异或当数组为[3,0,1]时x与0-3的全部数字异或再与数组元素[3,0,1]异或即 这样就能得出消失的数字执行次数为2n1时间复杂度为O(N)代码为
int missingNumber(int* nums, int numsSize) {int x 0;for (int i 0; i numsSize; i){x ^ i;}for (int i 0; i numsSize; i){x ^ nums[i];}return x;
}3.先求和再减去数组元素
先求出0-nn是数组的元素个数所有数字之和再减去数组nums中的所有元素得到的自然是消失的数字。如当数组为[3,2,0,1]时求出0-4所有数的和10再-0-1-2-34所以消失的数字是4。 时间复杂度为O(N)代码为
int missingNumber(int* nums, int numsSize) {int sum (numsSize1) * (0 numsSize) / 2;for (int i 0; i numsSize; i){sum - nums[i];}return sum;
}好了那么本篇博客就到此结束了如果你觉得本篇博客对你有些帮助可以给个大大的赞吗感谢看到这里我们下篇博客见❤️