LCP167 两数之和II--输入有序数组[leetcode-5]

LCP167 两数之和II--输入有序数组

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

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

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

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

示例 1:

复制代码
输入:numbers = [2,7,11,15], target = 9
输出:[1,2]
解释:2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。
题解

输入本身有序,推荐使用双指针。结果看来是1基数的,在算法阶段使用0基数,返回1基数即可

代码
CPP 复制代码
class Solution {
public:
    vector<int> twoSum(vector<int>& numbers, int target) {
    //这题的性质很好,字迹从小到大
    //使用双指针法,也称滑动窗口
    int l=0;
    int r=numbers.size()-1;
    int sum;
    while(l<r)
    {
        sum=numbers[l]+numbers[r];//计算和
           //注意答案要求的是1基数形式
        if(sum==target)   return {l + 1, r + 1}; // 返回1基数的索引;

        if(sum>target) --r;   //SUM偏大,则左移右指针,让总结果变小
        if(sum<target) ++l;		SUM偏小,则右移左指针,让总结果变大
    }

   //实际上按照题设,这里不可能到达,但是LEETCODE很奇怪,它必须要一个显式的返回值
    return{};
    }
};

结果排名

很遗憾啊,没有100%

相关推荐
wuweijianlove5 分钟前
算法复杂度估算的实验建模与可视化表达的技术6
算法
执笔画流年呀6 分钟前
7大排序算法
java·算法·排序算法
AI成长日志12 分钟前
【算法学习专栏】动态规划基础·中等两题精讲(198.打家劫舍、322.零钱兑换)
学习·算法·动态规划
计算机安禾14 分钟前
【数据结构与算法】第28篇:平衡二叉树(AVL树)
开发语言·数据结构·数据库·线性代数·算法·矩阵·visual studio
测试_AI_一辰14 分钟前
AI 如何参与 Playwright 自动化维护:一次自动修复闭环实践
人工智能·算法·ai·自动化·ai编程
未来之窗软件服务28 分钟前
算法设计—计算机等级考试—软件设计师考前备忘录—东方仙盟
算法·软件设计师·计算机等级考试
未来之窗软件服务30 分钟前
哈夫曼树构造—计算机等级考试—软件设计师考前备忘录—东方仙盟
算法·软件设计师·计算机等级考试·仙盟创梦ide·东方仙盟
SUNNY_SHUN1 小时前
VLM走进农田:AgriChat覆盖3000+作物品类,607K农业视觉问答基准开源
论文阅读·人工智能·算法·开源
黎阳之光1 小时前
视频孪生赋能车路云一体化,领跑智慧高速新征程
人工智能·算法·安全·数字孪生
Darkwanderor2 小时前
高精度计算——基础模板整理
c++·算法·高精度计算