题目:在所给的数组(0~n)中找出消失的数字
例:在数组{0,1,2,3,5,6,7,8,9}中,少了4
思路一:先计算0~n的和再减去数组的和
代码细节:
//方法:先算出0~n的和再减去数组中数字的和
int main()
{
int arr[10] = {9,2,3,6,1,5,7,8,0};//定义数组(0~9中少了4)
int count = 9 * 10 / 2;//求0~n的和
for (int i = 0; i < 10; i++)
{
count -= arr[i];//用和依次减去数组中的值
}
printf("%d ",count);//输出
return 0;
}
代码实现:
思路二:异或
代码细节:
//方法:异或
int main()
{
int arr[10] = { 9,2,3,6,1,5,7,8,0 };//定义数组
int sz = sizeof(arr) / sizeof(arr[0]);
int a = 0;
//先让a与数组中的数字异或
for (int i = 0; i < sz; i++)
{
a ^= arr[i];
}
//再让结果与0~n的数字异或
for (int i = 0; i < sz; i++)
{
a ^= i;
}
printf("%d ", a);//输出
return 0;
}
代码实现:
异或的知识点:
异或符号:^
异或规则:只适用于整形,将整形转化为二进制,相同为0,相异为1。规则记忆小技巧:大家可以把异或看成是相亲,只有性别不同(0|1),才可以配对成功,若性别相同(0|0或1|1),是无法配对成功的。
异或规律:
偶^偶=偶 ;
奇^奇=奇;
奇^偶=奇;
0^任何数=任何数。
感谢家人的阅读,若有不准确的地方 欢迎在评论区指正!