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

(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.lryc.cn/news/252153.html

相关文章:

  • 鸿蒙(HarmonyOS)应用开发——构建页面(题目答案)
  • Python基础快速过一遍
  • 等保测评报价相差很大,里面有什么门道
  • MATLAB的rvctools工具箱熟悉运动学【机械臂机器人示例】
  • 如何精准操作无人机自动停机坪?
  • 【蓝桥杯】带分数
  • 软件工程 课堂测验 选择填空
  • 计算机网络的分类
  • 百度收录批量查询工具,免费SEO优化排名工具
  • select选择框里填充图片,下拉选项带图片
  • 轨道交通数字孪生可视化平台,助力城市交通运营智慧化
  • 【每日OJ —— 101. 对称二叉树】
  • 善网商城上线洁柔产品 公益人专享爱心价官方正品
  • 禁止谷歌浏览器自动更新
  • Oracle存储过程返回DataSet(多个DataTable)给C#
  • 如何往excel中写子表?
  • Flutter 控件查阅清单
  • 【高效开发工具系列】gson入门使用
  • Python中的缺失值
  • JVM 字节码
  • ComfiUI API调用随记
  • Dockerfile讲解
  • Ansible及其优势是什么?
  • 使用群晖Docker搭建HomeAssistant并实现异地公网访问家中智能设备
  • 重塑生成式AI时代数据战略,亚马逊云科技re:Invent大会Swami主题演讲
  • 【恋上数据结构】哈夫曼树学习笔记
  • 前端下拉框select标签的插件——select2.js
  • 【MySQL的基本命令{DML 和 DDL}】
  • unity3d模型中缺失animation
  • 搭建自己的wiki知识库【转】