简单的算法问题8——单独的数字(位运算)
来源:互联网 发布:爬山虎公司知乎 编辑:程序博客网 时间:2024/06/11 10:26
简单的算法问题8——单独的数字(位运算)
此算法均是用C++编写
此题目均是来做计蒜客
题目
给定一个数组 A,除了一个数出现一次之外,其余数都出现三次。找出出现一次的数。
规则
如:{1,2,1,2,1,2,7},找出 7。
你的算法只能是线性时间的复杂度,并且不能使用额外的空间哦~
输入格式
第一行输入一个数 n(1≤n≤500),代表数组的长度。
接下来一行输入 n个 int 范围内(-2147483648…2147483647)的整数,表示数组 A。保证输入的数组合法。
输出格式
输出一个整数,表示数组中只出现一次的数。
形如:
样例输入
4
0 0 0 5
样例输出
5
刨坑点
1.这道题答案的重点算法是位运算,对于我来说这道题的重点是查找,怎么才能查找出数字不是三个的那个数,我想起当年学数据结构的时候的算法了,就写了一个最简单的,在查找算法中用了一个num来计数,如果遇见相同的次数就加一,如果在数组里面数只出现了一次肯定num=1;
而其他的数字的num=3;
所以我只有挑选出num=1;
的那个肯定就是只出现一次的那个数。
代码
#include <iostream>#include <vector> using namespace std;int CheckOne(vector <int> a);bool search(vector <int> a,int n);int main(){ int n; cin>>n; if(n>0&&n<501){ vector <int> a; for(int i=0;i<n;i++){ int j; cin>>j; a.push_back(j); } cout<<CheckOne(a); return 0; }}int CheckOne(vector <int> a){ for(int i=0;i<a.size();i++){ int n=a[i]; if((search(a,n))==true){ return n; } }}bool search(vector <int> a,int n){ int num=0; for(int i=0;i<a.size();i++){ if(a[i]==n){ num++; } } if(num==1){ return true; } else{ return false; }}
测试
测试成功~!
阅读全文
1 0
- 简单的算法问题8——单独的数字(位运算)
- 计蒜客 单独的数字(位运算)
- 单独的数字(位运算)
- 计蒜客15 单独的数字 位运算
- 计蒜客 单独的数字 位运算总结
- Python|计蒜客——单独的数字
- 一个位运算的算法问题
- 计蒜客————单独的数字(二)
- bnuoj 1065 简单的问题(位运算)
- 简单的位运算
- 简单的位运算
- 位运算的问题
- [计蒜客] 单独的数字
- 单独的数字
- 单独的数字
- 单独的数字
- 计蒜客 -- 单独的数字
- 单独的数字
- 关于mybaties中的一些小问题(不定时更新)
- GitHub上前100名Android 开源库。
- 虚拟机上安装jdk1.8
- Java_DecimalFormat用法
- 企业模板:双语工业水利工程类织梦企业网站模板
- 简单的算法问题8——单独的数字(位运算)
- js获取当前时间转换时间格式yyyy-mm-dd hh:mm:ss
- 如何写好测试用例
- WebApp上传图片并加水印
- POJ3281_Dining_最大流::分配问题
- 谈谈面试别人的感受
- 织梦教程:如何用dedecms织梦模板搭建网站?
- 微信小程序学习笔记(三)
- 使用JNI实现java调用c++