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

(C++)和为s的两个数字--双指针算法

 个人主页:Lei宝啊 

愿所有美好如期而遇


和为S的两个数字_牛客题霸_牛客网输入一个升序数组 array 和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果。题目来自【牛客题霸】icon-default.png?t=N7T8https://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b?tpId=13&tqId=11195&ru=/exam/oj

算法原理

双指针法,不一定是说就要使用指针,只是一种形象的说法,在数组中,我们一般将数组下标当做指针。我们定义left和right,left赋值0,right赋值右边界下标,写一个循环,当left小于right就继续循环,在循环里我们比较left和right下标对应的数组的值的和与s的大小,如果和大于s,那么我们使right--,如果大于,我们left++,如果相等,我们尾插进vector,然后break返回。

图示

我们返回4和11,记住不是返回下标,而是数组的值。

代码

class Solution 
{
public:
    vector<int> FindNumbersWithSum(vector<int> array,int sum) 
    {
        int left = 0;
        int right = array.size() - 1;

        vector<int> res;    
        while(left < right)
        {
            if(array[left] + array[right] < sum)
            {
                left++;
            }
            else if(array[left] + array[right] > sum)
            {
                right--;
            }
            else 
            {
                res.push_back(array[left]);
                res.push_back(array[right]);
                break;
            }
        }

        return res;
    }
};


http://www.kler.cn/a/156374.html

相关文章:

  • 传奇996_21——龙岭事件
  • 学习记录:js算法(九十二):克隆图
  • 论文解析:边缘计算网络中资源共享的分布式协议(2区)
  • 2024-11-13 学习人工智能的Day26 sklearn(2)
  • 在Java中使用ModelMapper简化Shapefile属性转JavaBean实战
  • Vue 3 介绍及应用
  • CDA level-2 备考经验分享 转数据分析师CDA证书备考 考试相关说明
  • ZYNQ_project:HDMI
  • ubantu配置网卡ip
  • 数据库管理-第122期 配置Halo数据库(202301204)
  • 前后端数据传输格式(下)
  • 日志检索场景ES->Doris迁移最佳实践:函数篇
  • Python+OpenCV实现最强自动扫雷
  • 算法基础--双指针
  • 深度学习——第3章 Python程序设计语言(3.2 Python程序流程控制)
  • PAD平板签约投屏-高端活动的选择
  • C++基础介绍及关键字
  • PHPExcel 导出Excel报错:PHPExcel_IOFactory::load()
  • 分享74个节日PPT,总有一款适合您
  • 【部署】Deploying Trino on linux
  • C++ string类(2)—成员访问、插入、删除、替换、查找和交换操作
  • 免费数据采集软件,多种数据采集方式
  • centos 源码编译gcc10.2
  • Vue框架学习笔记——列表渲染:v-for
  • python——多线程的相关知识点总结
  • Golang数据类型(数字型)