-
找出数组中两个不成对的数
求数组中两个不成对的数字
利用输出参数求解:
# include
# include <assert.h>
bool GetUniquetwo(int* arr, int len,int*sub1,int*sub2)
{
assert(arr != NULL && sub1 != NULL && sub2 != NULL && len > 0);
int ans = 0;
int c = 0;
int b = 0;
for (int i = 0; i < len; i++)
{
ans ^= arr[i];
}
if (ans == 0)
{
printf("所有的数字都成对\n");
return 0;
}
int a = 1;
while ((ans & a) != 1)
{
a <<= 1;
}
for (int i = 0; i < len; i++)
{
if ((arr[i] & a) == 1)
{
c^= arr[i];
*sub1 = c;
}
else
{
b ^= arr[i];
*sub2 = b;
}
}
if (c == 0 || b == 0)
{
return false;
}
return true;
}
int main()
{
int sub1, sub2;
int arr[] = { 1,4,7,0,2,4,7,1,0,5 };
int len = sizeof(arr) / sizeof(arr[0]);
if (GetUniquetwo(arr, len, &sub1, &sub2))
{
printf("两个不成对的是数分别为:%d %d\n", sub1, sub2);
}
else
{
printf("没有两个不成对的数\n");
}
return 0;
}
-
相关阅读:
基于.net的应用开发技术-作业五
flutter循环
Ubuntu配置Samba服务
在nodejs中使用typescript
Python 算法高级篇:深入理解复杂度分析-时间复杂度与空间复杂度
写在Go语言招生之际
GitHub配置账号Pull Request更新代码分支
C 语言 while 和 do...while 循环
【Oracle】Oracle系列之十二--视图、记录、同义词、序列
Android Hook View的创建流程
-
原文地址:https://blog.csdn.net/qq_70799748/article/details/126510120