双指针算法_和为 s 的两个数_C++

本文介绍了如何通过双指针算法,利用数组的单调性,在递增排序的数组中查找两个数,使它们的和等于给定的数字s。通过不断调整左右指针,找到满足条件的一对数。
摘要由CSDN通过智能技术生成

题目:

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

 算法原理:

 利用单调性!使用双指针算法!

设立左右指针分别指向最左端和最右端,然后让这两个数相加,查看是否等于我们需要的数字s

如果不等于,则查看是大于还是小于数字s

如果是小于数字s则左边指针往右移动,如果是大于数字s则右边指针往左移动

因为如果是小于s,那么左端指向的数字和数组内任意数字相加都小于s,所以需要右移动

如果是大于,则右端指向的数字和数组内任意数字相加都大于s,所以需要左移动

最后如果左端指向的和右端指向的相加得出等于数字s则直接返回左右指针指向的数字即可!

 

 代码编写:

  • 最后的那个else后面的写法是C++的一种语法,因为如果返回值是vector且返回值是多个,则可以使用这种写法 {nums[left],num[right]}
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值