题目连接
https://leetcode.com/problems/single-number-iii/
Single Number III
Description
Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.
For example:
Given nums = [1, 2, 1, 3, 2, 5], return [3, 5].
Note:
The order of the result is not important. So in the above example, [5, 3] is also correct.
Your algorithm should run in linear runtime complexity. Could you implement it using only constant space complexity?
class Solution {
public:
vector<int> singleNumber(vector<int>& nums) {
A.clear();
vector<int> ans;
size_t n = nums.size();
for (size_t i = 0; i < n; i++) A[nums[i]]++;
for (IT i = A.begin(); i != A.end(); ++i) {
if (i->second == 1) ans.push_back(i->first);
}
return ans;
}
private:
map<int, int> A;
typedef map<int, int>::iterator IT;
};
本文提供了一种解决LeetCode上单数III问题的方法,该问题要求在数组中找到仅出现一次的两个元素,所有其他元素都恰好出现两次。通过使用C++中的map结构,算法实现了线性时间复杂度,但未达到常数空间复杂度的要求。
716

被折叠的 条评论
为什么被折叠?



