力扣刷题-167.两数之和

给你一个下标从 1 开始的整数数组 numbers ,该数组已按非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1]numbers[index2] ,则 1 <= index1 < index2 <= numbers.length

以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1index2

你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。

你所设计的解决方案必须只使用常量级的额外空间。

cpp 复制代码
class Solution {
public:
    vector<int> twoSum(vector<int>& numbers, int target) {
        int low = 0, high = numbers.size() - 1;
        while (low < high) {
            int sum = numbers[low] + numbers[high];
            if (sum == target) {
                return {low + 1, high + 1};
            } else if (sum < target) {
                ++low;
            } else {
                --high;
            }
        }
        return {-1, -1};
    }
};

利用双指针,逻辑比较简单,但是写出来费劲,左右相加依次递减遍历答案。

相关推荐
俩娃妈教编程几秒前
2025 年 09 月 三级真题(1)--数组清零
c++·算法·gesp真题
AI科技星11 分钟前
时空的几何动力学:基于光速螺旋运动公设的速度上限定理求导与全维度验证
人工智能·线性代数·算法·机器学习·平面
㓗冽13 分钟前
进制转换(字符串)-基础题82th + 表达式求值(字符串)-基础题83th + 删除字符(字符串)-基础题84th
算法
小范自学编程14 分钟前
算法训练营 Day31 - 贪心算法 Part05
算法·贪心算法
jimy114 分钟前
撇除猪肉腥味调料
职场和发展·程序员创富
锅包一切17 分钟前
PART2 双指针
c++·算法·leetcode·力扣·双指针
tankeven21 分钟前
HJ91 走方格的方案数
c++·算法
俩娃妈教编程23 分钟前
2024 年 09 月 二级真题(2)--小杨的矩阵
c++·算法·gesp真题
浅念-26 分钟前
C++ STL vector
java·开发语言·c++·经验分享·笔记·学习·算法
小雨中_26 分钟前
2.8 策略梯度(Policy Gradient)算法 与 Actor-critic算法
人工智能·python·深度学习·算法·机器学习