当前位置: 首页 > news >正文

找单身狗(c语言)

1./找单身狗
//在一个数组中只有两个数字出现一次,其他所以数字都出现了两次
//编写一个函数找出这两个只出现一次的数字

2.方法一:暴力求解,我们用冒泡函数,进行比较如果i==j,那么n++,如果n==1,那么我们将他存储在arr2[],然后我们将arr2[]进行打印,就可以了。

#include<stdio.h>
//方法一;
int main()
{int b = 0;int n = 0;int arr2[2] = { 0 };int arr[ ] = { 0,1,2,3,4,5,0,1,2,3 };int ret = sizeof(arr) / sizeof(arr[0]);for (int i = 0; i < ret; i++){int n = 0;for (int j = 0; j < ret; j++){if (arr[i] == arr[j]){n++;}}if (n == 1){arr2[b] = arr[i];b++;}}for (int i = 0; i < b; i++){printf("%d ", arr2[i]);}return 0;
}

3.方法二:

/1.进行分组,如何进行分组
//用按位异或(^)比较二进制的位数,相同等于 0,不同等于 1,
// 因为3^3=0,3^3^5=5,所以可以找到他们单独的数字
//如数组int arr[ ] = { 7,1,2,3,4,5,7,1,2,3 };按位异或就是
//7^1^2^3^4^5^7^1^2^3==7^7^7^1^1^2^2^3^3^4^5==4^5
//4的二进制 0100
//5的二进制 0101
//按位与后为 0001,我们进行取一如果找到了一就出来,如果没有找到n++,
// 不同的数一定能找到一个二进制不同的地方,按位于后为最右边的1
//如果我们找到二进制的第n位为一,我们就可以将4与5分开

#include<stdio.h>
void signle_dog(int arr[], int sz,int *pc, int *pb)
{int pos = 0;int ret = 0;//进行按异或for (int i = 0; i < sz; i++){ret = ret ^ arr[i];}//求出二进制第几位是一for (pos = 0; pos < 32; pos++){if (((ret >> pos) & 1) == 1){break;}}//将他们进行分组for (int j = 0; j < sz; j++){if (((arr[j] >> pos) & 1) == 1){*pc = *pc ^ arr[j];}else{*pb = *pb ^ arr[j];}}}
int main()
{int arr[] = { 0,1,2,3,4,5,0,1,2,3 };int dog1 = 0;int dog2 = 0;int sz = sizeof(arr) / sizeof(arr[0]);signle_dog(arr,sz,&dog1,&dog2);printf("%d %d\n", dog1, dog2);return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【论文阅读】通过使用实体增强框架融合多种多模态线索来改进假新闻检测
  • Kotlin 泛型小知识: `<T>`, `<out T>`, `<in T>` 的区别
  • Oracle查询优化--分区表建立/普通表转分区表
  • C++:string类(1)
  • 根DNS服务器
  • 【ROS2】PID控制
  • 2024上海初中生古诗文大会备考:单选题真题和每道题独家解析
  • 让一个元素靠右对齐
  • 如何使用pytest的fixtures以及pytest-dependency插件来管理接口之间的依赖关系(上)
  • 8.26 T4 日记和编辑器(fhq维护kmp——kmp本身含有的单射与可合并性)
  • Multi-UAV|多无人机、多场景路径规划MATLAB
  • Mac环境下Python3虚拟环境创建、Flask安装以及创建运行第一个最小的Flask项目
  • 科技改变搜索习惯:Anytxt Searcher,重新定义你的信息获取方式!
  • 学院个人信息|基于SprinBoot+vue的学院个人信息管理系统(源码+数据库+文档)
  • Linux下递归设置目标目录及其子目录和文件的权限
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • CSS相对定位
  •  D - 粉碎叛乱F - 其他起义
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • ES6系列(二)变量的解构赋值
  • Js基础——数据类型之Null和Undefined
  • Js基础知识(四) - js运行原理与机制
  • log4j2输出到kafka
  • Lucene解析 - 基本概念
  • Mac转Windows的拯救指南
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • 类orAPI - 收藏集 - 掘金
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 时间复杂度与空间复杂度分析
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 听说你叫Java(二)–Servlet请求
  • 为视图添加丝滑的水波纹
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 一天一个设计模式之JS实现——适配器模式
  • 译米田引理
  • ​比特币大跌的 2 个原因
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Note)C++中的继承方式
  • (pojstep1.3.1)1017(构造法模拟)
  • (十八)SpringBoot之发送QQ邮件
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)VC++中ondraw在什么时候调用的
  • .NET Core中的去虚
  • .NET 回调、接口回调、 委托
  • .NET 中什么样的类是可使用 await 异步等待的?