这题用暴力破解法O(n^2)通不过。

1.可以用先减一个数,后用二分查找法寻找另一个数的方法。

具体地,在数组中找到两个数,使得它们的和等于目标值,可以首先固定第一个数,然后寻找第二个数,第二个数等于目标值减去第一个数的差。利用数组的有序性质,可以通过二分查找的方法寻找第二个数。为了避免重复寻找,在寻找第二个数时,只在第一个数的右侧寻找。代码详见: LeetCode-Solution

2.采用双指针法——缩减搜索空间

双指针挺好理解的。但是我是凭感/直觉做的,具体的理论解释,我看到“缩减搜索空间”,感觉挺形象的。看这张动图,是不是超级好理解!!详细的解释看原文吧~力扣(《一张图告诉你 O(n) 的双指针解法的本质原理》)

话不多说,上代码!

class Solution {public int[] twoSum(int[] numbers, int target) {// 2.双指针——缩减搜索空间int len=numbers.length;int down=0;int up=len-1;int sum;    int[] ans=new int[2];while(down<up){sum=numbers[up]+numbers[down];if(sum>target)    up--;else if(sum<target) down++;else    return new int[]{down+1,up+1};}return ans;}
}

参考:

1.LeetCode-Solution

2.力扣

LeetCode:167. 两数之和 II - 输入有序数组(java)相关推荐

  1. C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组

    C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...

  2. leetcode(167)两数之和 II - 输入有序数组

    两数之和 II - 输入有序数组 给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target . 函数应该以长度为 2 的整数数组的形式返回这两 ...

  3. LeetCode 167. 两数之和 II - 输入有序数组(双指针)

    1. 题目 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: ...

  4. LeetCode 167. 两数之和 II - 输入有序数组 思考分析

    目录 1.暴力,超时 2.双指针+滑动窗口+条件限制 AC 3.观看题解(吸取他人经验) 1.二分查找 2.双指针 3.双指针+二分查找 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和 ...

  5. LeetCode 167 两数之和 II - 输入有序数组

    题目描述 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数.函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2.说明:返回的下 ...

  6. Leetcode 167. 两数之和 II - 输入有序数组 解题思路及C++实现

    解题思路: 因为数组本身是有序的,所以比较简单.定义两个指针,分别指向数组的头部和尾部. 偏大的话,就将尾部指针向前移一位: 偏小的话,就将头部指针向后移一位. class Solution { pu ...

  7. 2. Leetcode 167. 两数之和 II - 输入有序数组 (数组-双向双指针)

    给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target .函数应该以长度为 2 的整数数组的形式返回这两个数的下标值.numbers ...

  8. Leetcode 167. 两数之和 II - 输入有序数组 (每日一题 20210818)

    给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target .函数应该以长度为 2 的整数数组的形式返回这两个数的下标值.numbers 的下标 ...

  9. c++两个数组对比去掉重复的元素_LeetCode 题解 | 167.两数之和 II 输入有序数组...

    点击上方蓝字设为星标 下面开始今天的学习- 力扣 167.两数之和 II - 输入有序数组(点击文末阅读原文查看题目)题目描述 给定一个已按照 升序排列 的有序数组,找到两个数使得它们相加之和等于目标 ...

  10. 力扣 167. 两数之和 II - 输入有序数组

    167. 两数之和 II - 输入有序数组 给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target . 函数应该以长度为 2 的整数数 ...

最新文章

  1. gearman mysql udf
  2. 210228Linux 条件变量 线程池
  3. 什么时候才能都及格呢?
  4. Java集合Map与其子类回顾
  5. shell写入文件,后面会覆盖前面
  6. c语言字符型数据怎么输入输出,C语言基础之数据类型与输入/输出
  7. 集合的相关概念(开闭、有界无界、内点边界点等)
  8. 视频转换器怎么将视频转成GIF动画
  9. [Alg]排序算法之插入排序
  10. 【英语阅读】纽约时报 | 护目镜、口罩、雨衣:大流行时代的空中旅行
  11. Maven详解【Idea搭建Maven项目、Maven常用指令、Maven的传递性和依赖性、排除依赖】
  12. APP推送消息测试点分析
  13. 用python创建微信机器人_手把手教你用Python创建微信机器人
  14. matlab kml批量转为shp文件,arcpy实现 kml批量转出为shp
  15. android 铃声设置文件夹
  16. linux三国杀,三国杀!Linux、openSUSE和Ubuntu对比
  17. 浙大PAT甲级-1021
  18. 从一位阿里 P9 的年薪和资产聊起!
  19. 什么样的员工必须开除
  20. matlab 随机骨料程序,基于matlab的混凝土三维圆形骨料模型随机投放方法.pdf

热门文章

  1. 我擦!硬盘文件全被人删了!!
  2. 如何添加51la代码及隐藏统计图标
  3. poj 1575 Easier Done Than Said?【字符串处理】
  4. 帕斯卡命名法、驼峰命名法、下划线命名法
  5. 视通科技知识产权保护中心审理庭解决方案
  6. (附源码)ssm产品裂变管理系统 毕业设计 100953
  7. 编译原理实验报告一:PL0语言编译器分析(PL0,词法分析,语法分析,中间代码生成)
  8. C++静态成员对象与静态成员函数
  9. ENVI中使用水体指数法NDWI提取水体
  10. PHP 数组定义与基本使用