class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int> heap;
//新建一个哈希表,把每一个数值映射为他的下标
for(int i=0;i<nums.size();i++){
//遍历每个数
int r = target-nums[i];
if(heap.count(r)) return{
heap[r],i};
heap[nums[i]]=i;
}
return {
};//要有返回值,这一行一定不会执行,防止警告
}
};
map 每一步操作是O(logn)
unordered_map 底层是哈希表 每一步操作是O(1)
先考虑时间复杂度,时间尽可能少
再考虑空间复杂度
力扣[LeetCode].1. 两数之和
猜你喜欢
转载自blog.csdn.net/weixin_45488131/article/details/108720173
今日推荐
周排行