一个数组中只有俩个数出现了一次,其他都是成对出现的-创新互联

#include <stdio.h>
#include<stdlib.h>


int find_one_bit(int num)    //约定寻找二进制中的某一位为1的位
{
int bit = 0;
while (num)
{
if (num & 1 == 1)
return bit;
bit++;
num = num >> 1;
}
return -1;
}


void find_num(int arr[], int size, int *p1, int *p2)
{
int tmp = 0;
int i = 0;
int pos = 0;
for (i = 0; i < size; i++)
{
tmp ^= arr[i];    //tmp保存的最终结果为不同的两个数字异或的结果
}
pos = find_one_bit(tmp);
for (i = 0; i < size; i++)
{
if (1 & (arr[i] >> pos))  //约定二进制位中同一位置是否为1,用以分组数字,因为某一位为1时,由异或的结果可知必定一个数字该位为0,另一个为1。0(0==*p1)与任何数字异或仍为该数本身。 
*p1 ^= arr[i];
else
*p2 ^= arr[i];
}
}

//主函数
int main()
{
int arr[] = {1,2,3,4,5,1,2,6,3,4};
int size = sizeof(arr) / sizeof(arr[0]);
int num1 = 0;
int num2 = 0;
find_num(arr, size, &num1, &num2);  //num1,num2必须传进地址,否则只是修改了形参而并不影响主函数的值,num1,num2仍为初始化的0。
printf("%d %d\n", num1, num2);
system("pause");
return 0;
}

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名雅安服务器托管、营销软件、网站建设、长寿网站维护、网站推广。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

分享标题:一个数组中只有俩个数出现了一次,其他都是成对出现的-创新互联
网页网址:https://www.cdcxhl.com/article24/ddgece.html

成都网站建设公司_创新互联,为您提供软件开发网站排名网页设计公司外贸网站建设响应式网站面包屑导航

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站制作