力扣[LeetCode].1. 两数之和

在这里插入图片描述

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)  
先考虑时间复杂度,时间尽可能少 
再考虑空间复杂度

猜你喜欢

转载自blog.csdn.net/weixin_45488131/article/details/108720173