【发布时间】:2021-03-05 13:34:59
【问题描述】:
在 leetcode 上,我发现“忽略”涉及哈希映射的最坏情况时间复杂度是很常见的。我认为在软件面试中,像他们经常做的那样假设“最坏情况”是标准的。以下是我对一个简单问题的解决方案。问题是在字符串中找到第一个不重复的字符。我知道哈希映射平均是 O(1) 查找.. 但是在遍历字符串并查找哈希映射时,为什么时间复杂度不是 O(N^2) 而是 O(N)?
#include <unordered_map>
class Solution {
public:
unordered_map<char, int> m;
int firstUniqChar(string s) {
for(char c : s) {
m[c]++;
}
for(int i =0; i < s.length(); i++) {
if(m[s[i]] == 1) {
return i;
}
}
return -1;
}
};
【问题讨论】:
标签: c++ time-complexity