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

[两数之和II]

在这里插入图片描述

代码思路分析

使用 双指针法 在有序数组 numbers 中寻找两个数,使它们的和等于 target

1. 初始化
int l = 0, r = n - 1;  // 双指针:l 指向头,r 指向尾
vector<int> res;       // 存储结果
  • 指针含义
    • l(左指针):从数组头部开始向右移动。
    • r(右指针):从数组尾部开始向左移动。
2. 双指针遍历
while (l < r) {if (numbers[l] + numbers[r] < target) {l++;  // 和太小,左指针右移} else if (numbers[l] + numbers[r] > target) {r--;  // 和太大,右指针左移} else {res.push_back(l + 1);  // 找到解,记录索引(从1开始)res.push_back(r + 1);return res;            // 立即返回结果}
}
  • 移动逻辑
    • 和太小numbers[l] + numbers[r] < target → 左指针 l++(增大和)。
    • 和太大numbers[l] + numbers[r] > target → 右指针 r--(减小和)。
    • 匹配成功numbers[l] + numbers[r] == target → 返回索引 [l+1, r+1]
3. 返回结果
  • 找到解:直接返回 res(包含两个索引)。
  • 无解:题目保证解存在,实际不会执行到 return res(但代码保持完整性)。

关键点

  1. 有序数组的利用
    • 数组已排序,因此可以通过双指针的移动方向 智能调整和的大小
  2. 双指针的正确性
    • 每次移动指针都能排除一部分不可能的解,确保不会漏解。
  3. 索引处理
    • 题目要求返回 从 1 开始的索引,因此结果需要 +1
class Solution {
public:vector<int> twoSum(vector<int>& numbers, int target) {int n=numbers.size();int l=0,r=n-1;vector<int> res;while(l<r){if(numbers[l]+numbers[r]<target){l++;}else if(numbers[l]+numbers[r]>target){r--;}else{res.push_back(l+1);res.push_back(r+1);return res;}}return res;}
};
http://www.dtcms.com/a/318123.html

相关文章:

  • 保姆级教程:从0手写RAG智能问答系统,接入Qwen大模型|Python实战
  • Django创建抽象模型类
  • Ethereum:Hardhat Ignition 点燃智能合约部署新体验
  • Linux发行版分类与Centos替代品
  • React:受控组件和非受控组件
  • 将ssm聚合项目部署到云服务器上
  • MyBatis基础操作完整指南
  • 计数组合学7.14(对偶 RSK 算法)
  • 四、Envoy动态配置
  • 工业协议转换终极武器:EtherCAT转PROFINET网关的连接举例
  • 直播SDK商业化 vs 开源路线:工程稳定性、成本与演进能力全对比
  • 嵌入式开发学习———Linux环境下IO进程线程学习(五)
  • Flink CDC如何保障数据的一致性?
  • 云计算一阶段Ⅱ——12. SELinux 加固 Linux 安全
  • Dart语言“跨界”指南:从JavaScript到Kotlin,如何用多语言思维快速上手
  • Pipeline功能实现Redis批处理(项目批量查询点赞情况的应用)
  • Typescript入门-类型讲解
  • django object.create之后返回id
  • 【音视频】ALSA详细介绍
  • 从单枪匹马到联盟共生:白钰玮的IP破局之路​
  • 最新windows安装git(保姆及教程)
  • Python 高阶函数:用函数玩出花样
  • gpt-oss openai开源大模型
  • MCP 协议:AI 时代的 “万能转接头”,从 “手动粘贴” 到 “万能接口”:MCP 协议如何重构 AI 工具调用规则?
  • C++11之智能指针
  • springboot项目justAuth扩展第二个小程序
  • clock_adjtime、clock_getres、clock_gettime、 clock_nanosleep、clock_settime 系统调用及示例
  • 【面试八股总结】线程/进程同步问题
  • 概率/期望 DP Let‘s Play Osu!
  • 【数论】素数