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

【算法专题突破】双指针 - 和为s的两个数字(6)

目录 

1. 题目解析

2. 算法原理

3. 代码编写

写在最后:


1. 题目解析

题目链接:剑指 Offer 57. 和为s的两个数字 - 力扣(Leetcode)

 这道题题目就一句话但是也是有信息可以提取的,

最重要的就是开始的那句话,“递增序列”

然后在数组中找出两个和为s的数即可(而且是任意一对即可)

2. 算法原理

这道题很简单,如果用暴力枚举直接两层for循环搞定就行,

但是使用暴力解法的话,就没有利用到他是有序序列的这个特性了。

看到有序一般我们会想到用二分法,但是二分比较难写,

所以我就打算利用单调性使用双指针来解这道题:

我们用 left 指针指向左边,right 指针指向右边,然后开始操作:

sum 是 left + right 的值,

如果:sum < target ,就让 left 指针右移找更大的数

如果:sum > target ,就让 right 指针左移找更小的数

如果:sum == target ,返回结果即可。

3. 代码编写

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {int left = 0, right = nums.size() - 1;vector<int> ans;while(left < right) {int sum = nums[left] + nums[right];if(sum < target) left++;else if(sum > target) right--;else {ans.push_back(nums[left]);ans.push_back(nums[right]);break;}}return ans;}
};

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

http://www.lryc.cn/news/156430.html

相关文章:

  • Redis7入门概述
  • SQL sever命名规范
  • BCSP-玄子Share-Java框基础_工厂模式/代理模式
  • 【数据结构】2015统考真题 6
  • HTML <track> 标签
  • php中识别url被篡改并阻止访问的实现方式是什么
  • c++ 学习 之 const,constexpr,volatile
  • 【Flink】关于jvm元空间溢出,mysql binlog冲突的问题解决
  • C#常用多线程(线程同步,事件触发,信号量,互斥锁,共享内存,消息队列)
  • OpenWrt系统开发笔记
  • 实战 - Restful APi 格式规范
  • 《Linux从练气到飞升》No.21 Linux简单实现一个shell
  • 【iVX】iVX的低代码未来发展趋势:加速应用开发的创新之路
  • zookee 安装
  • OpenWrt编译自己的应用程序
  • MySQL 50 题。
  • 强化学习算法总结 (1)
  • Qt应用开发(基础篇)——向导对话框 QWizard
  • Python类的方法
  • 变电站自动化监控系统
  • MySql学习笔记11——DBA命令介绍
  • Webpack 复习小结
  • Laravel chunk和chunkById的坑
  • 从零开始学习 Java:简单易懂的入门指南之泛型及set集合(二十二)
  • JVM----GC(垃圾回收)详解
  • 数据库的三个范式
  • 谷歌浏览器打开白屏 后台还有还有很多google chrome进程在运行
  • Java EE 突击 15 - Spring Boot 统一功能处理
  • JasperReport定义变量后打印PDF变量为null以及整个pdf文件为空白
  • Python 及 Pycharm 的安装 2023.8