两数之和 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;
    }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【OpenGrok代码搜索引擎】三、OpenGrok常用命令

    【OpenGrok代码搜索引擎】三、OpenGrok常用命令写在前面为了防止一些无法预料的情况发生,建议在完成代码项目索引创建后对索引生成器(indexer)生成的配置文件configuration.xml进行备份。一、免配置方法可以使用一个OpenGrokDocker容器,该容器包含了OpenGrok配置环境,但需要注意的是,该容器不适合大型的代码项目。详细参考链接如下:opengrok/dockeratmaster·oracle/opengrok·GitHubDockerHub二、常用命令2…

  • ups不间断电源工作原理及应用说明_ups不间断电源供电方案

    ups不间断电源工作原理及应用说明_ups不间断电源供电方案小功率1-3KVAUPS不间断电源主要应用在IT设备,采用稳压稳频技术,校正电压,校正频率,保护计算机等设备不受损坏,更重要是保证数据不丢失,全面解决电网的各种问题,包括市电断电、电网浪涌、高压尖脉冲、暂态过电压、电压跌落、频率漂移、杂波干扰等等。下面科士达小编为大家介绍ups不间断电源工作原理及应用说明。    一、工作原理    1.当市电正常时,输入继电器RY2闭合,经升压

    2022年10月23日
  • C语言 — void的用法解析[通俗易懂]

    C语言 — void的用法解析[通俗易懂]C语言-void的用法解析简介​ void中文翻译为”无类型”,有的也叫”空类型”。常用在程序中对定义函数的参数类型、返回值、函数中指针类型进行声明。用法​ void应用最广泛的就是跟指针结合,即void* //无类型指针,也称为空指针,可以指向任何类型的数据 //注意一点:当我们需要使用void类型的的指针变量区指向 某一类型的变量的时候,必须要对其进行类型转换​ 这里补充一点:因为我们在定义一个指针变量的时候第一件事就是指定我们指针变量所指向的变量的类型。一

  • Android面试题之Activity篇

    Android面试题之Activity篇Activity篇目录前言一、Activity1、什么是Activity?2、请描述一下Activity生命周期3、请描述一下Activity的四个状态4、两个Activity之间传递数据,除了intent,广播接收者,contentprovider还有啥?5、Android中的Context,Activity,Appliction有什么区别?6、Context是什么?7、如何保存Activity的状态?8、横竖屏切换时Activity的生命周期9、两个Activity

  • mysql client library_mysqlclient[通俗易懂]

    mysql client library_mysqlclient[通俗易懂]linux下用C语言写MySQL程序,用如下命令编译时出错:[xitong@localhostmysql]$gcc-omysqlmysql.c-lmysqlclient错误如下:/usr/bin/ld:cannotfind-lmysqlclientcollect2:ld返回1解决方法:用locate命令查找mysqlclient所在目录,如下所示:[xitong@local…

    2022年10月24日
  • meta分析一般步骤

    Meta分析总体可分为以下几步:选题,文献检索、数据提取、质量评估、数据整合及结果解读。一,选题对一些大样本,多中心临床合作已经得到明确结论的的,没必要做meta分析。二、文献检索在制定文献检索策略时,总体的要求就是查全和查准。需要考虑如下几个方面:1.圈定搜索数据库(外文有:MEDLINE、theCochranelibrary、医学文摘、TOXLINE、OVI…

发表回复

您的电子邮箱地址不会被公开。

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