两数之和
- 下标从1开始
- 按顺序返回下标
时间复杂度O(n)
空间复杂度O(n)
class Solution {public:vector<int> twoSum(vector<int>& numbers, int target) {// 构建一个map记录每个元素的值和位置unordered_map<int, int> mp;for (int i = 0; i < numbers.size(); i++) {// 遍历数组,不断向map中加入元素,同时判断map中是否已有与当前元素加起来等于目标值的元素auto it = mp.find(target - numbers[i]);// 如有有则返回两个元素对应的下标if (it != mp.end()) {return {it->second+1, i+1};}mp[numbers[i]] = i;}// 遍历结束返回空,数组中没有和等于目标值的两个元素return {};}};
