[每日练习]一个数组中有一个数字只出现一次,其他数字都出现了偶数次。请找出一个只出现一次的数字
来源:互联网 发布:药品 网络 终端销售 编辑:程序博客网 时间:2024/04/30 15:52
#include <stdio.h>
/*
原题描述:
一个数组中有一个数字只出现一次,其他数字都出现了偶数次。请找出一个只出现一次的数字?
解题思路:
将数组中所有的元素异或,最终的元素就是只出现一次的数字
*/
static int FindOneNum(int arr[], int length)
{
int i, num=0;
for(i=0; i<length; i++)
num ^= arr[i];
return num;
}
/*
原题描述:
一个数组中有二个数字只出现一次,其他数字都出现了偶数次。请找出二个只出现一次的数字?
解题思路:
将数组中所有的元素异或,最终的元素就是那两个只出现一次的元素的异或。
因为那两个元素不相等,所以异或的结果必然不为0。
假设结果的某个bit为1,那必然是原来的两个数的这个位,一个为1,一个为0。
利用这个特性,将原来的数组分为两组,分别求解就可以了
*/
static int FindFirstSetBit(int num)
{
int idx=31;
while(idx>=0 && ((num >> idx) & 0x1)==0x0)
idx--;
return idx;
}
static int IsSet(int num, int n)
{
if((num>>n) & 0x1)
return 1;
return 0;
}
static void FindTwoNum(int arr[], int length)
{
int i, num1=0, num2=0;
int twonum, n;
twonum = FindOneNum(arr, length);
n = FindFirstSetBit(twonum);
for(i=0; i<length; i++)
{
if(IsSet(arr[i], n))
num1 ^= arr[i];
else
num2 ^= arr[i];
}
printf("num1=%d, num2=%d\n", num1, num2);
}
int main()
{
int arr[]={1,1,2,2,3,3,5,5,6,7,7,10,8,8,9,9};
int length = sizeof(arr)/sizeof(int);
//printf("%d",FindOneNum(arr, length));
FindTwoNum(arr, length);
return 0;
}
- [每日练习]一个数组中有一个数字只出现一次,其他数字都出现了偶数次。请找出一个只出现一次的数字
- 一个数组中有三个数字a、b、c只出现一次,其他数字都出现了两次。请找出三个只出现一次的数字。
- 找出数组中只出现一次/两次/三次的数字,而其他数字都出现偶数次
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。 请写程序找出这两个只出现一次的数字。
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次,请写程序找出这两个只出现一次的数字
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
- 算法习题61:找出数组中两个只出现一次的数字:一个整型数组里除了两个数字之外,其他的数字都出现了两次
- 在一个长度为n的整形数组a里,除了三个数字只出现一次外,其他的数字都出现了2次。请写程序输出任意一个只出现一次的数字
- 一个数组中,除了有两个数字只出现一次外,其他数字都出现两次,求出这两个出现一次的数字
- PhotoShop算法实现进阶-模糊滤镜-平滑(二十一)
- iOS中使用ZipArchive压缩和解压缩文件
- 属性系统分析
- 未能推导模板参数(errorC2783)
- 关于YAF框架自动加载类的注意事项
- [每日练习]一个数组中有一个数字只出现一次,其他数字都出现了偶数次。请找出一个只出现一次的数字
- 内核usb键盘代码简析
- mongoDB数据库创建、查询、更新、删除
- HDOJ 题目1695 GCD(欧拉函数,容斥原理)
- 试用期,职场新人展示自我,扎根企业过渡期
- In App Purchases 入门
- timer.c
- 请不要再责怪你的程序员“太慢”
- 心在哪里风景就在哪里