华为面试题 及其自己的扩展
来源:互联网 发布:01背包问题贪心算法 编辑:程序博客网 时间:2024/06/12 08:31
华为有个题目是:有一组数据,里面只有两个数是单独存在的,其他的数都是两两存在。请你找出这两个数。
网上的解题思路是从一个数上开始的。如果 2 3 3 .如何找到2呢?那么对这些数异或,3^3结果为0,所以结果2^3^3=2就找到了。
所以下面的关键就是如何使这两个数分组。比如2 3 3 4 由于2^4!=0。所以我们想到了从左到右找第一个结果为0的那位。根据
这个位置进行分组。然后利用找一个数的思想解题。
#include <iostream>using namespace std;void findTwoUnique(int a[],int len){int temp=0;int num1=0;int num2=0;int cnt=0;/************************************************************************//* 这个是求得两个不同数的异或值 此事0100^0101得 0001 *//************************************************************************/for (int i=0;i<len;i++){temp=temp^a[i];}/************************************************************************//* 这是从做到右得到第一个为1的值,以此为突破口分组 *//************************************************************************/while(temp&1==0){temp=temp>>1;cnt++;}/************************************************************************//* 对对应位是否为1或者0分别分组 *//************************************************************************/for (int i=0;i<len;i++){int b=a[i] >> cnt;if(b&1==1){num1=num1^a[i]; // 分组后分别求值}else{num2=num2^a[i]; //分组后分别求值}}cout << num1 << " " << num2 << endl;}void main(){int a[]={1,1,2,4,3,3,2,5};findTwoUnique(a,8);}
如果是找所有字符均出现过一次的那该怎么办?又如找到出现三次的。可以利用accII码来帮我们。完全与上面的思想不一样。程序如下:
#include <iostream>#include <string>using namespace std;void findUnique(char* str,int n){string tempstr="";int flagCh[256]={0};for (int i=0;i<n;i++){if (flagCh[str[i]]==0){flagCh[str[i]]++;}else if(flagCh[str[i]]==1){flagCh[str[i]]++;}}for (int i=0;i<n;i++){if(flagCh[str[i]]%2==1){tempstr=tempstr+str[i];}}cout << tempstr;}void main(){char str[100]="heello22344";int n=strlen(str);findUnique(str,n);}
0 0
- 华为面试题 及其自己的扩展
- 一道面试题及其扩展
- 华为一道面试题及其解决方法
- 华为的java面试题
- 准备的华为面试题
- 华为的JAVA面试题
- 华为今年的面试题
- 华为的JAVA面试题
- 据说的华为面试题
- 华为的一个面试题
- 一道华为的面试题
- 华为的JAVA面试题
- 华为的JAVA面试题
- 华为的JAVA面试题
- 华为新的面试题
- 华为的一道面试题
- 华为的JAVA面试题
- 华为的JAVA面试题
- Java注释规范整理
- PAT DS 3-06 表达式转换
- 分布式文件系统测试方法与测试工具
- win7 C盘扩容
- 【源码】物品展示必备代码(旋转与缩放代码)
- 华为面试题 及其自己的扩展
- 用js识别是否360浏览器
- html param
- sping3.1 配置完成后报错请求界面 org.springframework.web.servlet.DispatcherServlet noHandlerFound
- 各种函数各种语言执行时间
- Android-----WebView使用
- C#操作Dataset数据集与SQLite数据库
- DFA最小化 -- Hopcroft算法 Python实现
- yum (rpm) 和 apt-get的对应关系