博客
关于我
两数之和
阅读量: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/

    你可能感兴趣的文章
    Python 出现 TypeError: ‘encoding‘ is an invalid keyword argument for this function 解决方法
    查看>>
    python 出现 TypeError: ‘list‘ object is not callable 的解决方法
    查看>>
    python 函数1
    查看>>
    python 函数学习
    查看>>
    Python 分析天气,告诉你中秋应该去哪里
    查看>>
    Python 列表删除相同的元素
    查看>>
    Python 初学者需要知道的四条建议
    查看>>
    Python 判断字符串是否包含子字符串
    查看>>
    python 判断当前时间是否为零点
    查看>>
    python 利用pandas读取本地中CSV文件的指定列 列名重命名 并保存回本地
    查看>>
    python 利用pyspark读取HDFS中CSV文件的指定列 列名重命名 并保存回HDFS
    查看>>
    python 利用pyttsx3文字转语音
    查看>>
    python 利用已有Ner模型进行数据清洗合并
    查看>>
    python 到大数据开发工程师_如何成为一个大数据开发工程师?
    查看>>
    python 加密解密(base64, AES)
    查看>>
    Python 和Java 哪个更适合做自动化测试?
    查看>>
    python 图片转ico
    查看>>
    python 图片转文字、语音转文字、文字转语音保存音频并朗读
    查看>>
    python 在包含类似字符\x16、\x12、\x某某的数组中将以\x开头的字符找出来的方法
    查看>>
    Python 在并行进程之间共享字典
    查看>>