Loading

Leetcode-1-两数和为K

题目链接


题目描述

找出数组中,和为 K 的两个数的下标。
答案只有一个。
可以按任意顺序返回。

要求

时间复杂度O(n)

思路

  1. 和为K的子数组 的简化版。

  2. 也是用哈斯表:遍历,一边记录元素出现的位置,一边判断 (K-nums[i]) 是否出现过。
    若出现过,直接返回答案
    若没有,记录 nums[i] 的位置。继续向下遍历


C++代码

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int, int>mp; // 键值 -下标
        vector<int> ans;

        for (int i=0; i<nums.size(); i++)
        {
            if (mp.count(target-nums[i]))
            {
                ans.emplace_back(i);
                ans.emplace_back(mp[target-nums[i]]);
                break;
            }
            else
                mp[nums[i]] = i;
        }
        return ans;
    }
};
posted @ 2022-01-17 21:13  ARUI丶  阅读(69)  评论(0编辑  收藏  举报