您的位置:首页 > 其它

数据流中第一个唯一的数字

2018-01-23 12:16 288 查看
给一个连续的数据流,写一个函数返回终止数字到达时的第一个唯一数字(包括终止数字),如果在终止数字前无唯一数字或者找不到这个终止数字, 返回
-1
.

您在真实的面试中是否遇到过这个题?

Yes

样例

给一个数据流
[1, 2, 2, 1, 3, 4, 4, 5, 6]
以及一个数字
5
, 返回
3


给一个数据流
[1, 2, 2, 1, 3, 4, 4, 5, 6]
以及一个数字
7
, 返回
-1


class Solution {
public:
/*
* @param : a continuous stream of numbers
* @param : a number
* @return: returns the first unique number
*/
int firstUniqueNumber(vector<int> nums, int number) {
// Write your code here
if (nums.size() == 0) {
return -1;
}
unordered_map<int, int> hash_table;
queue<int> qu;
int i = 0;
for (;i < nums.size(); i++) {
if (nums[i] == number) {
break;
}
if (hash_table.find(nums[i]) != hash_table.end()) {
hash_table[nums[i]]++;
} else {
hash_table[nums[i]] = 1;
qu.push(nums[i]);
}
}
// no end number
if (i == nums.size()) {
return -1;
}
// find first one
while (!qu.empty()) {
int num = qu.front();
qu.pop();
if (hash_table[num] == 1) {
return num;
}
}
return -1;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐