zoukankan      html  css  js  c++  java
  • 查找重复的数

          在前几天写了一个查找缺失的数的算法(http://blog.csdn.net/dlutbrucezhang/article/details/11467693),今天写一个类似的算法,查找一个重复的数。

           描述:一个数组中存放连续的数字,但是其中多出一个数字,是一个重复出现的数字,当然,它可以出现在任何位置。

           解决方法:

          1.总和相减法

           由于多出一个数,所以加在一块之后再减去原来的总和就可以得到重复的那个数字。

          2.异或法

          这是把所有连续的数在一块异或,最终也是得到重复的数(描述的不清楚,还是看代码吧)

    #include <stdio.h>
    
    int main()
    {
    	int test_array[] = {1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11};
    	int array_sum = 0, real_sum;
    	int i;
    	int array_length;
    	int xor = 0;
    
    	/*获取数组的长度*/
    	array_length = sizeof(test_array) / sizeof(int);   /*这里的长度是12*/
    
    	/*总和相减法*/
    	for(i = 0; i < array_length; i++)
    	{
    		array_sum += test_array[i];
    	}
    	real_sum = (1 + array_length - 1) * (array_length - 1) / 2;
    	printf("重复的那个数字是:%d
    ", array_sum - real_sum);
    
    	/*整体异或法*/
    	for(i = 1; i < array_length; i++)
    	{
    		xor ^= i;
    	}
    
    	for(i = 0; i < array_length; i++)
    	{
    		xor ^= test_array[i];
    	}
    	printf("重复的那个数字是:%d
    ", xor);
    	
    }
  • 相关阅读:
    centos 7常用需求
    python处理mysql的一些用法
    python下的queue
    2017-1-17不错的模块和工具
    wordpress钩子和钩子函数
    python中字典的使用
    linux下查看系统信息
    apk安全测试思路
    rhel 5.8 and 6.4 yum配置
    分布式文件系统
  • 原文地址:https://www.cnblogs.com/riskyer/p/3320053.html
Copyright © 2011-2022 走看看