当前位置: 首页 > news >正文

167. Two Sum II - Input array is sorted

一、题目

  1、审题

  

  2、分析

    给出一个升序的整形数组,当两个元素之和为 target ,输出这两个元素的下标。(只有一组符合的数)

 

二、解答

  1、思路:

    方法一、

      采用两个指针,start 从前向后移动,end 从后向前移动;当 num[start] + num[end] = target 时,输出。

    public int[] twoSum2(int[] numbers, int target) {
        
        for (int i = 0, j = numbers.length - 1; i < j; ) {
            if(numbers[i] + numbers[j] == target)
                return new int[]{1+i, 1+j};
            else if(numbers[i] + numbers[j] > target)
                j--;
            else
                i++;
        }
        
        return null;
    }

 

  方法二、

    遍历数组,以当前遍历的元素 num1 为假设的第一个符合的数,则 num2 = target - num1,采用二分查找在数组后续部分进行查找。

    public int[] twoSum3(int[] numbers, int target) {
        
        for (int i = 0; i < numbers.length; i++) {
            int start = i + 1;
            int end = numbers.length - 1;
            int tmp = target - numbers[i];
            while(start <= end) {
                int mid = start + ((end - start) >> 1);
                if(numbers[mid] == tmp) 
                    return new int[]{i + 1, mid + 1};
                else if(numbers[mid] < tmp) 
                    start = mid + 1;
                else
                    end = mid - 1;
            }
        }
        return null;
    }

 

转载于:https://www.cnblogs.com/skillking/p/9795106.html

相关文章:

  • 想用Unity3D引擎技术赚点钱的看过来
  • python3爬取墨迹天气并发送给微信好友,附源码
  • 晒一晒老司机写的“超融合私有云”解决方案
  • 4种删除Word空白页的小技巧,都是你需要用到的!
  • ASP.NET Core 2.2.0-preview3 发布
  • LaTeX-用polynom宏包排版多项式的除法
  • Java中JNI的使用(上)
  • 番外篇——什么叫会工作
  • Python3.6使用tesseract-ocr的正确方法
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • Java提高篇(一):区分引用变量与对象
  • Elasticsearch 参考指南(升级前重新索引)
  • FreeWheel业务系统微服务化过程经验分享
  • CENTOS7 Python3.7安装 scipy
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • [deviceone开发]-do_Webview的基本示例
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • C# 免费离线人脸识别 2.0 Demo
  • es6
  • ES6--对象的扩展
  • Java 内存分配及垃圾回收机制初探
  • Js基础知识(一) - 变量
  • LeetCode18.四数之和 JavaScript
  • maven工程打包jar以及java jar命令的classpath使用
  • python 学习笔记 - Queue Pipes,进程间通讯
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Vue.js-Day01
  • 阿里云购买磁盘后挂载
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 聊聊sentinel的DegradeSlot
  • 强力优化Rancher k8s中国区的使用体验
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (Oracle)SQL优化技巧(一):分页查询
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (七)c52学习之旅-中断
  • (区间dp) (经典例题) 石子合并
  • (十) 初识 Docker file
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转) Android中ViewStub组件使用
  • (转)关于pipe()的详细解析
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET BackgroundWorker
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET4.0并行计算技术基础(1)
  • .NET简谈设计模式之(单件模式)
  • @RequestBody与@ModelAttribute
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [.net]官方水晶报表的使用以演示下载
  • []串口通信 零星笔记