码迷,mamicode.com
首页 > 编程语言 > 详细

找出其他数出现两次的数组中唯一一个出现一次的数

时间:2016-01-06 11:40:17      阅读:387      评论:0      收藏:0      [点我收藏+]

标签:

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

/*
	有101个整数,
	其中有50个数出现了两次,
	1个数出现了一次,
	找出出现了一次的那个数。
*/

/*
	思路:
	出现两次的数进行异或为0,
	故将整个数组的数进行异或,
	则得到此只出现一次的那个数
*/

int isOdd(int num);
int getOne(int *arr, int length);

int main(){
	int number = 0;	//整数个数
	scanf("%d",&number);
	if (!isOdd(number))	//判断是否是奇数
		printf("Please input an odd number.\n");
	else{
		int * numbers = (int*)malloc(number * sizeof(int));	//存储这number个整数
		printf("Please input %d number: \n",number);
		int tmp;
		for (int i = 0; i < number; ++i){
			scanf("%d",&tmp);
			numbers[i] = tmp;
		}
		printf("%d\n",getOne(numbers,number));
	}
	system("pause");
	return 0;
}

int isOdd(int num){
	if (num % 2 == 0)
		return 0;
	else
		return 1;
}

int getOne(int *arr, int length){
	int num = 0;
	for (int i = 0; i < length; ++i)
		num ^= arr[i];
	return num;
}

  

找出其他数出现两次的数组中唯一一个出现一次的数

标签:

原文地址:http://www.cnblogs.com/mutaohengheng/p/5104728.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!