更改wordpress所有的链接,佛山 网站关键词优化,郓城做网站,济南公司快速建站目录 1. 思路2. 代码 题目链接#xff1a;leetcode 17.04.消失的数字
题目描述#xff1a;
1. 思路
要求算法复杂度为O(n)#xff0c;有两种方式#xff1a;
#xff08;1#xff09;利用异或交换律 与nums所有元素异或一遍#xff1b;与0-n的值异或#xff0c;n… 目录 1. 思路2. 代码 题目链接leetcode 17.04.消失的数字
题目描述
1. 思路
要求算法复杂度为O(n)有两种方式
1利用异或交换律 与nums所有元素异或一遍与0-n的值异或nums中没出现的值就是消失的数。 2求和依次减去nums中的值 对nums元素求和依次减去nums中的元素得到消失的数。 2. 代码
int missingNumber1(int* nums, int numsSize) {int missingNumber 0;// 1.与nums中元素依次异或for (int i 0; i numsSize; i) {missingNumber ^ nums[i];}// 2.与0-n的值异或nums中没出现的值就是消失的数for (int num 0; num numsSize; num) {missingNumber ^ num;}return missingNumber;
}int missingNumber2(int* nums, int numsSize){int n numsSize;int missingNumber 0;// 1.等差数列公式求和((首项 尾项) * 项数) / 2int sum ((0 n) * (n 1)) / 2;// 2.依次减去nums中的值得到消失的数for (int i 0; i numsSize; i) {sum - nums[i];}return missingNumber sum;
}注意项数的值为啥是n 1? 因为消失了一个数字所以要加上。