力扣前1500道非会员题刷题笔记

Problem: 1. 两数之和

思路

首先定义一个unordered_map<int, int> heap, 用来记录数组nums中对应的数的下标
然后在一个for循环里遍历nums数组
用r记录target与当前数组的值的差值,再从当前数的前面找有没有这个差值,也就是heap.count(r), 如果有则返回{heap[r], i}, 如果没有就把当前的数以及它的下标记录进map,heap[nums[i]] = i;
最后因为力扣的严谨,循环外加一个return {};

解题过程

根据思路直接用c++打出来即可

复杂度

时间复杂度:

O(n)

空间复杂度:

O(n)

Code (c++)

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 {};
    }
};

作者:Focused Maxwell5f0(即是我本人,你们也可以去关注我的力扣账号(*^▽^*)
链接:https://leetcode.cn/problems/two-sum/solutions/2967806/liang-shu-zhi-he-ti-jie-by-focused-maxwe-6md1/
来源:力扣(LeetCode)

posted @ 2024-10-27 22:25  Sunyehh  阅读(18)  评论(0编辑  收藏  举报