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

【双指针】和为s的两个数字

57. 和为target的两个数字

在这里插入图片描述

剑指 Offer 57. 和为s的两个数字

​ 输入一个递增排序的数组和一个数字target,在数组中查找两个数,使得它们的和正好是target。如果有多对数字的和等于target,则输出任意一对即可。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[2,7] 或者 [7,2]

示例 2:

输入:nums = [10,26,30,31,47,60], target = 40
输出:[10,30] 或者 [30,10]

限制:

  • 1 <= nums.length <= 10^5
  • 1 <= nums[i] <= 10^6

解题思路:双指针

​ 还是一样,暴力破解对这道题来说肯定是会超时的,所以我们这里就不讲了,就是简单的枚举!

​ 那至于为什么暴力破解没办法解决这道题呢,其实是因为这道题已经有一个前提:数组的递增排序的

​ 也就是说我们可以使用二分算法,但是二分算法在这道题其实还不算是最优解,并且我们二分算法还没讲,所以这里就不使用二分算法发来解决;另外还可以使用哈希表来解决,但因为插入和获取是需要时间的,所以在时间和空间上也不是最优解!

​ 其实是这道题的最优解,巧妙的利用了单调性,其实和前两道题是类似的,就是使用双指针!

下面我们来分析以下算法流程:

  1. 初始化对撞指针,也就是一个 left 指针和一个 right 指针
  2. 此时去计算一下 nums[left] + nums[right]target 的关系,那么会分为下面三种情况:
    • nums[left] + nums[right] == target,此时直接返回这对组合即可!
    • nums[left] + nums[right] < target,说明此时和小了,要让 left++
    • nums[left] + nums[right] > target,说明此时和大了,要让 right--
  3. 重复上述操作,直到两个指针相遇
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {int left = 0, right = nums.size() - 1;while(left < right){if(nums[left] + nums[right] == target)return { nums[left], nums[right] };else if(nums[left] + nums[right] < target)left++;elseright--;}return {};}
};

在这里插入图片描述

http://www.xdnf.cn/news/114319.html

相关文章:

  • STM32F407 HAL库使用 DMA_Normal 模式实现 UART 循环发送(无需中断)
  • Postman设置环境变量与Token
  • idea连接远程服务器kafka
  • 学习海康VisionMaster之顶点检测
  • Rust 数据类型
  • 【“星睿O6”AI PC开发套件评测】开箱+刷机+基础环境配置
  • wordpress学习笔记
  • Trae+DeepSeek学习Python开发MVC框架程序笔记(二):使用4个文件实现MVC框架
  • 决策树在金融分析中有诸多应用场景
  • C语言——函数
  • 32BIT的SPI主机控制
  • 架构-系统工程与信息系统基础
  • 【Spring Boot】深入解析:#{} 和 ${}
  • java Springboot使用扣子Coze实现实时音频对话智能客服
  • 低空AI系统的合规化与标准化演进路径
  • 考研英一学习笔记
  • 数据结构——二叉树,堆
  • 【农气项目】基于适宜度的产量预报
  • Unity性能优化实战:用Profiler揪出卡顿元凶 (CPU/GPU/内存/GC全面解析) (Day 37)
  • http协议、全站https
  • 特征存储的好处:特征存储在机器学习开发中的优势
  • 【Linux】基于阻塞队列的生产消费者模型
  • 水上与水下遥控技术要点对比
  • 利用软件I2C驱动OLED,点亮、熄灭OLED屏幕以及获取当前OLED屏幕开启状态
  • 水域陆地两相宜,便携漏电探测仪
  • 【数据分析】酵母实验多指标数据的 R 语言分析与可视化
  • YOLOv11改进-双Backbone架构:利用双backbone提高yolo11目标检测的精度
  • 26考研 | 王道 | 数据结构 | 第七章 查找
  • SpringBoot | 构建客户树及其关联关系的设计思路和实践Demo
  • WHAT - 区分 Git PR 和 MR