给一个连续的数据流,写一个函数返回终止数字到达时的第一个唯一数字(包括终止数字),如果在终止数字前无唯一数字或者找不到这个终止数字, 返回 -1
.
样例
给一个数据流 [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;
}
};