力扣——第1题(C++)

9 阅读1分钟

B站讲的很好的老师:

【从零开始刷力扣学C++——两数之和】 www.bilibili.com/video/BV1tU…

题目

image.png

知识点:

1.vector容器:

image.png

image.png

2.引用

image.png

image.png

3.哈希表

image.png

image.png 哈希表详解: blog.csdn.net/qq_60831089…

题解

暴力解

public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int len = nums.size();
        int i=0;
        int j=0;
        for(int i=0;i<len;i++){
            for(int j=i+1;j<len;j++){
                if(nums[i]+nums[j]==target)
                return {i,j};
            }
        }
        return {};
    }
};

哈希表

public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int,int> hashtable;//创建哈希表,名称为hashtable
        int len=nums.size();
        for( int i=0;i<len;i++ ){
            auto it = hashtable.find( target - nums[i] );//迭代器it指向target - nums[i]
            if( it!=hashtable.end() ){
                //元素存在
                return { it->second , i };//it->second指向元素对应的下标
            }
            //元素不存在,则存入哈希表
            hashtable.insert( { nums[i] , i } );
        }
        return {};
    }
};