剑指offer56

剑指offer56:数组中只出现一次的数字

题目描述

一个整型数组里除了两个数字之外,其他的数字都出现了两次。
请写程序找出这两个只出现一次的数字。

解法一:基于map的统计方法

class Solution {
public:
    void FindNumsAppearOnce(vector<int> data, int* num1, int *num2) {
        map<int, int> mp;
        for (auto n : data)
            mp[n]++;
        map<int, int>::iterator it;
        int flag = 1;
        for (it = mp.begin(); it != mp.end(); it++)
        {
            if ((it->second == 1) && (flag == 1))
            {
                *num1 = it->first;
                flag++;
            }
            else if ((it->second == 1) && (flag == 2))
            {
                *num2 = it->first;
            }
        }
    }
};

   转载规则


《剑指offer56》 赵小亮 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Leetcode136 Leetcode136
Leetcode136:只出现一次的数字 题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。 找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例
2020-04-24
下一篇 
Leetcode724 Leetcode724
Leetcode724:寻找数组的中心索引 题目描述给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法。 我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。 如果数组不存在中
2020-04-24
  目录