博客
关于我
两数之和
阅读量:408 次
发布时间:2019-03-05

本文共 646 字,大约阅读时间需要 2 分钟。

双指针数法

给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。我们可以通过双指针技术来解决这个问题。

问题描述:给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。数组中的每个元素只能使用一次。

算法思路:我们可以使用双指针技术来解决这个问题。具体步骤如下:

  • 初始化两个指针,分别指向数组的开头和末尾。
  • 如果两个指针指向元素的和等于目标数,则返回这两个元素的索引。
  • 如果两个指针指向元素的和大于目标数,则将末尾指针向左移动一位。
  • 如果两个指针指向元素的和小于目标数,则将开头指针向右移动一位。
  • 示例:输入:numbers = [2,7,11,15]目标数:9

    输出:[1,2]

    详细步骤:初始时,左指针指向索引0(元素2),右指针指向索引3(元素15)。

    • 2 + 15 = 17 > 9,右指针向左移动到索引2(元素11)。
    • 左指针继续向右移动到索引1(元素7)。
    • 7 + 11 = 18 > 9,右指针继续向左移动到索引1(元素7)。
    • 左指针和右指针现在都指向索引1,这意味着找到了两个数:7和7。但是由于数组中不能重复使用相同的元素,我们需要重新调整指针。

    最终,我们发现索引1(元素7)和索引2(元素11)满足条件,7 + 11 = 18 > 9。因此,我们需要继续寻找下一个可能的组合。

    通过上述步骤,我们最终找到索引1和索引2的元素,它们的和等于目标数。因此,返回索引数组 [1,2]。

    注:索引数组的索引是从1开始计算的,而不是从0开始。

    转载地址:http://gxwzz.baihongyu.com/

    你可能感兴趣的文章
    Paint类(画笔)
    查看>>
    paip. 调试技术打印堆栈 uapi print stack java php python 总结.
    查看>>
    paip.android 手机输入法制造大法
    查看>>
    paip.spring3 mvc servlet的配置以及使用最佳实践
    查看>>
    Palindrome Number leetcode java
    查看>>
    Palo Alto Networks Expedition 未授权SQL注入漏洞复现(CVE-2024-9465)
    查看>>
    Palo Alto Networks Expedition 远程命令执行漏洞(CVE-2024-9463)
    查看>>
    Palo Alto Networks PAN-OS身份认证绕过导致RCE漏洞复现(CVE-2024-0012)
    查看>>
    Panalog 日志审计系统 libres_syn_delete.php 前台RCE漏洞复现
    查看>>
    Springboot中@SuppressWarnings注解详细解析
    查看>>
    Panalog 日志审计系统 sprog_deletevent.php SQL 注入漏洞复现
    查看>>
    Panalog 日志审计系统 sprog_upstatus.php SQL 注入漏洞复现(XVE-2024-5232)
    查看>>
    Panalog 日志审计系统 前台RCE漏洞复现
    查看>>
    PANDA VALUE_COUNTS包含GROUP BY之前的所有值
    查看>>
    pandas - 如何将所有列从对象转换为浮点类型
    查看>>
    Pandas - 按列分组并将数据转换为 numpy 数组
    查看>>
    Pandas - 按日期对日内时间序列进行分组
    查看>>
    Pandas - 有条件的删除重复项
    查看>>
    pandas -按连续日期时间段分组
    查看>>
    pandas -更改重新采样的时间序列的开始和结束日期
    查看>>