LeetCode:167. 两数之和 II - 输入有序数组(java)
这题用暴力破解法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)相关推荐
- C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组
C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...
- leetcode(167)两数之和 II - 输入有序数组
两数之和 II - 输入有序数组 给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target . 函数应该以长度为 2 的整数数组的形式返回这两 ...
- LeetCode 167. 两数之和 II - 输入有序数组(双指针)
1. 题目 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: ...
- LeetCode 167. 两数之和 II - 输入有序数组 思考分析
目录 1.暴力,超时 2.双指针+滑动窗口+条件限制 AC 3.观看题解(吸取他人经验) 1.二分查找 2.双指针 3.双指针+二分查找 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和 ...
- LeetCode 167 两数之和 II - 输入有序数组
题目描述 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数.函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2.说明:返回的下 ...
- Leetcode 167. 两数之和 II - 输入有序数组 解题思路及C++实现
解题思路: 因为数组本身是有序的,所以比较简单.定义两个指针,分别指向数组的头部和尾部. 偏大的话,就将尾部指针向前移一位: 偏小的话,就将头部指针向后移一位. class Solution { pu ...
- 2. Leetcode 167. 两数之和 II - 输入有序数组 (数组-双向双指针)
给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target .函数应该以长度为 2 的整数数组的形式返回这两个数的下标值.numbers ...
- Leetcode 167. 两数之和 II - 输入有序数组 (每日一题 20210818)
给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target .函数应该以长度为 2 的整数数组的形式返回这两个数的下标值.numbers 的下标 ...
- c++两个数组对比去掉重复的元素_LeetCode 题解 | 167.两数之和 II 输入有序数组...
点击上方蓝字设为星标 下面开始今天的学习- 力扣 167.两数之和 II - 输入有序数组(点击文末阅读原文查看题目)题目描述 给定一个已按照 升序排列 的有序数组,找到两个数使得它们相加之和等于目标 ...
- 力扣 167. 两数之和 II - 输入有序数组
167. 两数之和 II - 输入有序数组 给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target . 函数应该以长度为 2 的整数数 ...
最新文章
- gearman mysql udf
- 210228Linux 条件变量 线程池
- 什么时候才能都及格呢?
- Java集合Map与其子类回顾
- shell写入文件,后面会覆盖前面
- c语言字符型数据怎么输入输出,C语言基础之数据类型与输入/输出
- 集合的相关概念(开闭、有界无界、内点边界点等)
- 视频转换器怎么将视频转成GIF动画
- [Alg]排序算法之插入排序
- 【英语阅读】纽约时报 | 护目镜、口罩、雨衣:大流行时代的空中旅行
- Maven详解【Idea搭建Maven项目、Maven常用指令、Maven的传递性和依赖性、排除依赖】
- APP推送消息测试点分析
- 用python创建微信机器人_手把手教你用Python创建微信机器人
- matlab kml批量转为shp文件,arcpy实现 kml批量转出为shp
- android 铃声设置文件夹
- linux三国杀,三国杀!Linux、openSUSE和Ubuntu对比
- 浙大PAT甲级-1021
- 从一位阿里 P9 的年薪和资产聊起!
- 什么样的员工必须开除
- matlab 随机骨料程序,基于matlab的混凝土三维圆形骨料模型随机投放方法.pdf