两数之和 II – 输入有序数组(Java实现)

两数之和 II – 输入有序数组(Java实现)给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值index1和index2,其中index1必须小于index2。

大家好,又见面了,我是你们的朋友全栈君。

两数之和 II – 输入有序数组


题目

给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。

函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。

说明:

返回的下标值(index1 和 index2)不是从零开始的。
你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。

分析

该题最简单最暴力的解法就是双重循环,直到找到位置,时间复杂度很高,没有充分利用题目中的条件。

题目中已经给出:数组是升序排列的有序数组。

这样我们就可以使用双指针来求解了:l和r分别指向数组头和尾,当l<r成立时,遍历数组,根据有序数组的特性移动指针,直到找到为止。

代码实现

    /**
     * 167. 两数之和 II - 输入有序数组
     * @param numbers
     * @param target
     * @return
     */
    public int[] twoSum(int[] numbers, int target) {
        int l = 0, r = numbers.length - 1;
        int[] res = new int[2];
        while (l < r){
            if (numbers[l] + numbers[r] == target){
                res[0] = l + 1;
                res[1] = r + 1;
                break;
            }else if (numbers[l] + numbers[r] < target){
                l++;
            }else {
                r--;
            }
        }
        return res;
    }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140827.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java创建数组的几种方式[通俗易懂]

    Java创建数组的几种方式[通俗易懂]1、一维数组的声明方式:type[]arrayName;或 typearrayName[]; 附:推荐使用第一种格式,因为第一种格式具有更好的可读性,表示type[]是一种引用类型(数组)而不是type类型。建议不要使用第二种方式下面是典型的声明数组的方式: //声明整型数组 int[]intArray0; intintArray1[]; /

    2022年6月7日
  • 2018年又传喜报!热烈祝贺王家林大师大数据经典著作《Spark SQL大数据实例开发教程》 畅销书籍 出版上市![通俗易懂]

    2018年又传喜报!热烈祝贺王家林大师大数据经典著作《Spark SQL大数据实例开发教程》 畅销书籍 出版上市![通俗易懂]2018年又传喜报!热烈祝贺王家林大师大数据经典著作《SparkSQL大数据实例开发教程》畅销书籍出版上市!作者:王家林段智华 条码书号:9787111591979出版日期:2018/3/1出版社:机械工业出版社丛书名:大数据科学丛书定价:¥59.00        SparkSQL是Spark生态环境中核心和基础的组件,是掌握Spark的关键所在。本书完全从企业级开发的角度出…

    2022年5月10日
  • python randint函数用法_python scipy stats.randint用法及代码示例「建议收藏」

    均匀离散随机变量。作为一个实例rv_discrete类,randint对象从中继承了通用方法的集合(完整列表请参见下文),并使用特定于此特定发行版的详细信息来完善它们。注意:的概率质量函数randint是:对于k=low,…,high-1。randint需要low和high作为形状参数。上面的概率质量函数以“standardized”形式定义。要转移分布,请使用loc参数。特别,r…

    2022年4月12日
  • hibernate二级缓存配置[通俗易懂]

    hibernate二级缓存配置[通俗易懂] 二级缓存配置:    1、首先要打开二级缓存,在hibernate.cfg.xml中添加如下配置:  property name=”hibernate.cache.use_second_level_cache”>trueproperty>    2、Hibernate的二级缓存使用第三方的缓存工具来实现,所以我们需要指定Hibernate使用哪个     缓存工

    2022年5月10日
  • golang IDEA激活码【最新永久激活】2022.02.09

    (golang IDEA激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~4KDD…

    2022年4月1日
  • 下载安装 Python ,含详细步骤[通俗易懂]

    下载安装 Python ,含详细步骤[通俗易懂]1、到官网下载python安装包官网地址:https://www.python.org/downloads/点击“Windows”点击“DownloadWindowsinstaller

    2022年7月3日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号