【C++】双指针算法:和为s的两个数字

1.题目

虽然在牛客上是个中等题,但我感觉是比较简单的。大家在看完这篇文章后可以看看我的上一篇文章:有效三角形的个数。本文章的题目的解法只是有效三角形的个数这道题目的一个环节。看懂这篇文章后可以更好的解决有效三角形个数那道题目!

2.算法思路

我们需要利用好数组的有序性。

可以定义left和right指针,分别从左右两边遍历数组。left对应的数计为a,right对应的数计为b,则有:

若a+b>s right--;若a+b<s left++;若a+b==s 返回。

3.提交结果与代码实现

class Solution {
public:

    vector<int> FindNumbersWithSum(vector<int> array,int sum) {
        int left=0,right=array.size()-1;
        while(left<right){
            if(array[left]+array[right]<sum) left++;
            else if(array[left]+array[right]>sum) right--;
            else return {array[left],array[right]};
        }
        return {};
    }
};

时间复杂度分析:

遍历了一次数组,时间复杂度:O(n)。

空间复杂度分析:

定义了两个变量,空间复杂度:O(1)。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-26 06:22:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-26 06:22:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-26 06:22:03       82 阅读
  4. Python语言-面向对象

    2024-04-26 06:22:03       91 阅读

热门阅读

  1. 关于kafka,关于消息队列、消息协议

    2024-04-26 06:22:03       32 阅读
  2. lua中的pcall和xpcall和直接调用一个函数的区别

    2024-04-26 06:22:03       30 阅读
  3. h5键盘弹出收起时引起的页面变化

    2024-04-26 06:22:03       30 阅读
  4. AI辅助编码体验

    2024-04-26 06:22:03       26 阅读
  5. Spring 数据脱敏实现方式

    2024-04-26 06:22:03       32 阅读
  6. 设计模式详解(十七)——迭代子模式

    2024-04-26 06:22:03       38 阅读
  7. DAC音频解码芯片DP7398立体声数模转换芯片

    2024-04-26 06:22:03       28 阅读
  8. Apache Flink 流处理-[CentOS|Rocky] 镜像

    2024-04-26 06:22:03       25 阅读
  9. 使用Python实现简单的Web服务器

    2024-04-26 06:22:03       39 阅读