哈希表 | ||
1. 数组中两个数的和为给定值 | 解法可达O(N)时间复杂度 | ※ |
2. 判断数组是否含有重复元素 | 方法可优化 | ※ |
3. 最长和谐序列 | 思考后可做出 |
|
4. 最长连续序列 | 思考后可做出 |
|
哈希表使用 O(N) 空间复杂度存储数据,并且以 O(1) 时间复杂度求解问题。
1. 数组中两个数的和为给定值
1. Two Sum (Easy)
https://leetcode-cn.com/problems/two-sum/
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int,int> mp;
for(int i=0;i<nums.size();i++)
if(mp.find(target-nums[i])!=mp.end())
return vector<int>{i,mp[target-nums[i]]};
else mp[nums[i]]=i;
return vector<int>{};
}
};
2. 判断数组是否含有重复元素
217. Contains Duplicate (Easy)
https://leetcode-cn.com/problems/contains-duplicate/
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int> st;
for(int num:nums)
st.insert(num);
return st.size()<nums.size();
}
};
3. 最长和谐序列
594. Longest Harmonious Subsequence (Easy)
https://leetcode-cn.com/problems/longest-harmonious-subsequence/
4. 最长连续序列
128. Longest Consecutive Sequence (Hard)
https://leetcode-cn.com/problems/longest-consecutive-sequence/