一组数据中找出一个唯一出现过一次的数字

利用同一数字的异或为0的关系,创建了一个函数

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

int Fac(int n, int a[10])//创建异或函数
{
    //相等的数字异或之后就成0了
    int temp = 0;//必须先初始化0,或a[0]
    int i;
    for (i = 0; i < n; i++)
    {
        temp ^= a[i];
    }
    return temp;
}
int main()
{
    int i, n;
    int ret;
    int a[10];
    printf("请输入数组个数:\n");
    scanf("%d",&n);
    printf("请输入数组元素:\n");
    for (i = 0; i < n; i++)
    {
        scanf("%d",&a[i]);
    }
    ret = Fac(n, a);
    printf("%d",ret);
    return 0;
}

原文地址:https://blog.51cto.com/14233078/2374414

时间: 2024-11-05 16:40:13

一组数据中找出一个唯一出现过一次的数字的相关文章

Java从一组数组中找出最接近目标值的值

两种算法: 1.原始数据是乱序的 2.原始数据是有序的 1. 1 package test; 2 3 import java.io.File; 4 5 public class Test { 6 /** 7 * 假设原始数据是乱序 8 */ 9 static int[] src = new int[] { 25, 68, 5, 38, 2, 15, 90, 55, 46 }; 10 /** 11 * 目标值 12 */ 13 static int x = 555; 14 15 public st

在数组A中找出一个魔术索引

public static int magicSlow(int[] array) { for(int i=0;i<array.length;i++) { if(array[i]==i) { return i; } } return -1; } public static int magicFast(int [] array,int start,int end) { if(end<start||start<0||end>array.length){ return -1; } int

在百万数据中找出重复的数据sql

select * from (select count(name) as isone, name from tbl_org_departments group by name) t where t.isone > 1; 执行子句时结果: 下面是没使用分组的时候结果

【转】一个数组中有三个数字a、b、c只出现一次,其他数字都出现了两次。请找出三个只出现一次的数字。

转自:http://zhedahht.blog.163.com/ 题目:一个数组中有三个数字a.b.c只出现一次,其他数字都出现了两次.请找出三个只出现一次的数字. 分析:在博客http://zhedahht.blog.163.com/blog/static/2541117420071128950682/中我们讨论了如何在一个数组中找出两个只出现一次的数字.在这道题中,如果我们能够找出一个只出现一次的数字,剩下两个只出现一次的数字就很容易找出来了. 如果我们把数组中所有数字都异或起来,那最终的结

一组数据中只有一个数字出现一次,其他数成对出现,找出这个数

一组数据中只有一个数字出现了一次,其他所有数字都是成对出现的,请找出这个数字. (使用位运算) 直接使用异或运算. 代码如下: #include<stdio.h> #include<stdlib.h> int main() { int arr[]={3,5,9,2,5,3,2};  int size=sizeof(arr)/sizeof(arr[0]); int i=0,find=0; for(;i<size;i++) { find^=arr[i];//循环进行异或运算 }

海量日志数据__怎么在海量数据中找出重复次数最多的一个

问题一:         怎么在海量数据中找出重复次数最多的一个 算法思想:         方案1:先做hash,然后求模映射为小文件,求出每个小文件中重复次数最多的一个,并记录重复次数. 然后找出上一步求出的数据中重复次数最多的一个就是所求(如下). 问题二: 网站日志中记录了用户的IP,找出访问次数最多的IP. 算法思想:       IP地址最多有2^32=4G种取值可能,所以不能完全加载到内存中. 可以考虑分而治之的策略: map 按照IP地址的hash(IP)%1024值,将海量日志

面试题1:找出一个数组中三个只出现一次的数字

version1: 找出一个数组中一个只出现一次的数字,其他数字都出现两次:将所有数字异或,得到的结果即为只出现一次的. version2: 找出一个数组中两个只出现一次的数字,其他数字都出现两次:将所有数字异或,得到的结果即为x=a^b, index为x中第一个为1的位,则a 和b中第index为必然有一个为1,有一个为0.据此将所有数据分为两组,一组的第index为都为1,另一组第index为都为0,第一组数字异或得到a,第二组数字异或得到b. 时间复杂度为o(n),空间复杂度为o(1).

程序员面试100题之十:快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值(转)

能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解. 假如有如下的两个数组,如图所示: 5,6,1,4,7,9,8 给定Sum= 10 1,5,6,7,8,9 给定Sum= 10 分析与解法 这个题目不是很难,也很容易理解.但是要得出高效率的解法,还是需要一番思考的. 解法一 一个直接的解法就是穷举:从数组中任意取出两个数字,计算两者之和是否为给定的数字. 显然其时间复杂度为N(N-1)/2即O(N^2).这个算法很简

1152: 零起点学算法59——找出一个数组中出现次数最多的那个元素

1152: 零起点学算法59--找出一个数组中出现次数最多的那个元素 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 990  Accepted: 532[Submit][Status][Web Board] Description 找出一个数组中出现次数最多的那个元素 Input 第一行输入一个整数n(不大于20) 第二行输入n个整数 多组数据 Output 找出n个整数中出现次数最多的那个整数(