数组中求出现两次的元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组中求出现两次的元素相关的知识,希望对你有一定的参考价值。

参考技术A 1.问题描述
例如:数组a=2,3,1,5,5,5,5,7,8,1,元素2、3、7、8各出现1次,1出现两次,5出现4次,则重复次数最多的元素为5.
2. 方法与思路
2.1 以空间换时间,索引法
定义一个数组int cnt[MAX],将其元素全部初始化为0。然后遍历数组a,执行cnt[a[i]]++操作。最后在cnt数组中找最大的数,对应的数即为重复次数最多的数。
代码示例如下:
//以空间换时间,索引法intMaxFreq_index(inta[],intn)inti,j;intmax= a[0];//求出最大值,以分配计数数组空间for(i =1; i < n; i++)if(a[i] >max)max= a[i];int*cnt = newint[max];for(i =0; i = cnt[max] )        max= a[i];            returnmax;

136 Single Number 数组中除一个数外其他数都出现两次,找出只出现一次的数

给定一个整数数组,除了某个元素外其余元素均出现两次。请找出这个只出现一次的元素。
备注:
你的算法应该是一个线性时间复杂度。 你可以不用额外空间来实现它吗?

详见:https://leetcode.com/problems/single-number/description/

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int n=nums.size();
        if(n==0||nums.empty())
        {
            return -1;
        }
        int num=0;
        for(int n:nums)
        {
            num^=n;
        }
        return num;
    }
};

 

以上是关于数组中求出现两次的元素的主要内容,如果未能解决你的问题,请参考以下文章

一个数组中只有两个元素只出现一次,其他元素都出现两次,找出其中只出现一次的元素

数组中只出现一次的数字

136 Single Number 数组中除一个数外其他数都出现两次,找出只出现一次的数

位运算-异或运算-只出现一次的数字-给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素

给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。

leetcode961. 在长度2N的数组中找出重复N次的元素