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);
    	
    }
  • 相关阅读:
    opentsdb安装部署
    python发送邮件(html)例子
    python查库写库例子
    获取rds的cpu和内存使用情况
    数据库损坏的情况下如何获取到dbid
    grafana安装升级部署
    Specified key was too long
    mysql动态执行sql批量删除数据
    kafka删除topics
    cratedb导入json文件
  • 原文地址:https://www.cnblogs.com/riskyer/p/3320053.html
Copyright © 2011-2022 走看看