数据流中第一个唯一的数字
2018-01-23 12:16
288 查看
给一个连续的数据流,写一个函数返回终止数字到达时的第一个唯一数字(包括终止数字),如果在终止数字前无唯一数字或者找不到这个终止数字, 返回
您在真实的面试中是否遇到过这个题?
Yes
样例
给一个数据流
给一个数据流
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;
}
};
-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;
}
};
相关文章推荐
- lintcode--数据流中第一个唯一的数字
- LeetCode之数据流中第一个唯一的数字
- 算法爱好者——数据流中第一个唯一的数字 ? 待解决
- 剑指offer — 数据流中第一个不重复的数字
- 剑指offer35题:第一个只出现一次的字符+剑指offer55题:字符流中第一个不重复的字符+剑指offer51题:数组中重复的数字
- 判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20
- 使用递归来实现在ARR里如何删除每一个list的第一个节点不是数字‘2’
- 求字符串第一个非重复字符+首尾相连数数字依次remove
- 将32位md5压缩成8位32进制生成8位长度的唯一英文数字组合字符串
- JAVA如何获取唯一的数字
- 第一个数字0不显示
- 从面试题中学算法(2)---求数组中唯一n个出现1次的数字(n=1,2,3)
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。
- Find a number HNUST OJ 1517 (位运算 判断一列数字中出现的唯一一个奇数数字)
- Android取字符串的第一个数字
- 让你自己写的Android的Launcher成为系统中第一个启动的,也是唯一的Launcher.
- 让你自己写的Android的Launcher成为系统中第一个启动的,也是唯一的Launcher
- [转载]让你自己写的Android的Launcher成为系统中第一个启动的,也是唯一的Launcher.
- 算法((输出一个数组中出现的第一个重复数字)
- Emgu 获取图片第一个数字