每日一练(29):和为s的两个数字

简介: 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。

输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。


示例 1:


输入:nums = [2,7,11,15], target = 9

输出:[2,7] 或者 [7,2]


示例 2:


输入:nums = [10,26,30,31,47,60], target = 40

输出:[10,30] 或者 [30,10]


限制:


1 <= nums.length <= 10^5

1 <= nums[i] <= 10^6


来源:力扣(LeetCode)


链接:https://leetcode-cn.com/probl...


方法一:哈希


思路:


  • 创建哈希表
  • 遍历数组
  • 若哈希表中存在元素与当前遍历到的元素之和为 target 则返回结果即可
  • 没有满足条件的元素,返回空


vector<int> twoSum(vector<int>& nums, int target) {
    // 创建哈希表
    unordered_set<int> s;
    // 遍历数组
    for (int x : nums) {
        // 若哈希表中存在元素与当前遍历到的元素之和为target
        // 则返回结果即可
        if (s.count(target - x)) {
            return vector<int>{x, target - x};
        }
        // 插入当前遍历到的元素
        s.insert(x);
    }
    // 没有满足条件的元素,返回空
    return {};
}


方法二:双指针


充分利用递增数组的性质,双指针从头尾开始遍历,两数和小于目标,则left++;大于目标,则right--。


vector<int> twoSum(vector<int>& nums, int target) {
    int l = 0; int r = nums.size() - 1;
    while (l < r) {
        if (target == nums[l] + nums[r]) {
            return vector<int>{nums[l], nums[r]};
        }
        else if (target > nums[l] + nums[r]) {    
            l++;
        }
        else if (target < nums[l] + nums[r]) {    
            r--;
        }
    }
    return vector<int>();
}


目录
相关文章
白瞟党乐坏了!Alibaba内部最新Java开发手册(嵩山版)灵魂17问
Java是世界各地开发者使用最多的编程语言,无论是在用户最喜爱的编程语言排行榜、程序员薪资榜单、编程入门首选语言等榜单上都是常年占据前三的位置的一种语言,但它也是最难学的语言之一。而《Java开发手册》可以算是学习Java,规范写法的必读书目了,那么你知道为什么要按照规约来吗?
|
Java
JavaWeb第九章课后题 JSP详解
JavaWeb第九章课后题 JSP详解
156 0
|
13天前
|
云安全 人工智能 安全
|
5天前
|
Java Linux Maven
2025年最新版最细致Maven安装与配置指南(任何版本都可以依据本文章配置)
本文详细介绍了Maven的项目管理工具特性、安装步骤和配置方法。主要内容包括: Maven概述:解释Maven作为基于POM的构建工具,具备依赖管理、构建生命周期和仓库管理等功能。 安装步骤: 从官网下载最新版本 解压到指定目录 创建本地仓库文件夹 关键配置: 修改settings.xml文件 配置阿里云和清华大学镜像仓库以加速依赖下载 设置本地仓库路径 附加说明:包含详细的配置示例和截图指导,适用于各种操作系统环境。 本文提供了完整的Maven安装和配置
2025年最新版最细致Maven安装与配置指南(任何版本都可以依据本文章配置)
|
12天前
|
数据采集 人工智能 自然语言处理
🌼通义千问获信通院最高等级大模型安全认证
阿里巴巴通义千问荣获中国信通院“大规模预训练模型(文本生成功能)安全认证证书”,达最高等级——增强级。测评依据工信部CCSA行业标准,覆盖59种内容安全风险。通义千问在抵御指令注入和越狱攻击方面表现突出,得益于阿里云构建的全生命周期安全体系。同时,阿里云通过ISO/IEC 42001认证,成为全球首家获此殊荣的企业,彰显其AI管理水平与技术应用的国际领先性。通义千问已广泛应用于互联网、汽车、政务等领域,持续优化安全机制,推动行业智能化发展。
|
12天前
|
人工智能 开发者
2025魔搭开发者大会!来了!
2025魔搭开发者大会!来了!
630 1
OSZAR »