知识点

哈希表

思路

从左到右遍历,用哈希表记录下每个数出现的最左端的位置。每次找target-当前数的数是否存在,存在则更新答案。

时间复杂度 O(n)

AC Code(C++)

#include <unordered_map>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param info int整型vector 
     * @param target_weight int整型 
     * @return int整型vector
     */
    vector<int> findWeightRelation(vector<int>& info, int target_weight) {
        unordered_map<int, int> mp;
        int n = info.size();
        vector<int> res = {-1, -1};
        for (int i = 0; i < n; i ++) {
            int t = target_weight - info[i];
            if (mp.count(t)) {
                if (res[0] == -1 or mp[t] < res[0]) res = {mp[t], i + 1};
            }
            else mp[info[i]] = i + 1;
        }
        return res;
    }
};