当前位置: 首页 > news >正文

[补题记录]LeetCode 167.两数之和 II - 输入有序数组

StarryCoding 是面向计算机专业学生的综合学习与刷题平台,欢迎同学们的加入!

传送门:两数之和 II - 输入有序数组

Thought/思路

答案只需要返回两个下标,表示和为 target 的两个数。

我们可以用一个 map<int, vector> 维护原数组每个数存在哪些下标,然后对于每一个元素,查看是否存在它与 target 的差值。

当差值存在,并且 vector 中存在的元素与当前下标不是同一个时,就说明找到了答案。

Code/代码

class Solution {
public:
    vector<int> twoSum(vector<int>& numbers, int target) {
        std::map <int, std::vector <int>> mp;

        for (int i = 0; i < numbers.size(); ++ i) {
            mp[numbers[i]].push_back(i);
        }

        std::vector <int> ans;
        for (int i = 0; i < numbers.size(); ++ i) {
            int next = target - numbers[i];
            if (mp.count(next) && mp[next].size() > 0) {
                for (auto &item : mp[next]) {
                    if (item != i) {
                        ans.push_back(i + 1);
                        ans.push_back(item + 1);
                        break;
                    }
                }
            }
            if (ans.size() == 2) break;
        }

        return ans;
    }
};

相关文章:

  • 【自己动手】自制刷题系统(php+layui应用 社区工作者题库)
  • 24年护网工具,今年想参加护网的同学要会用
  • 深度学习训练时混合精度的作用
  • 如何使用AES128位进行视频解密
  • Leetcode:字符串转换整数 (atoi)
  • 软件开发整体介绍
  • Java中连接Mongodb进行操作
  • iOS Hittest 机制和实际应用之一 hittest方法
  • 【魅力网页的背后】:CSS基础魔法,从零打造视觉盛宴
  • ChatGPT-3
  • 【开源】新生报到网站 JAVA+Vue.js+SpringBoot+MySQL
  • 【原创】springboot+mysql员工管理系统
  • springboot基础及上传组件封装
  • 数据结构-堆(带图)详解
  • 制作ChatPDF之Elasticsearch8.13.4搭建(一)
  • 解决TrueNas Scale部署immich后人脸识别失败,后台模型下载异常,immich更换支持中文搜索的CLIP大模型
  • leetcode1:两数之和
  • Android manifest清单文件意外权限来源和合并规则
  • 设计模式之桥接模式
  • 单片机原理及应用复习
  • “毛茸茸”的画,诗意、温暖又治愈
  • 专访|高圆圆:像鸟儿一样,柔弱也自由
  • 上海如何为街镇营商环境赋能?送政策、配资源、解难题、强活力
  • 美政府称不再对哈佛大学提供联邦资助
  • 马上评|从一个细节看今年五一档电影
  • “五一”假期全社会跨区域人员流动量超14.65亿人次