LeetCode每日一题,167. Two Sum II - Input array is sorted
先看题目描述
大意就是给定一个有序数组和一个目标整数 target,返回其中相加等于 target 的两个数的下标(下标从 1 开始)
算法和思路
方法一:二分查找
因为题目给定的是个有序数组,所以第一反应就是用二分法,思路就是先固定一个数字,然后去寻找第二个数字,第二个数字的值等于 target - 固定的数字,利用数组的有序性,可以用二分查找法来寻找第二个数字,每次只在固定的数字右侧进行二分查找
实现源码如下
1 | class Solution { |
方法二:双指针法
定义一个 left 指针与一个 right 指针,初值为 0 与 numbers.length - 1,当 nums[left] + nums[right] < target 时,left 指针右移一位,当 nums[left] + nums[right] > target 时,right 指针左移一位,重复上述过程直至 nums[left] + nums[right] = target,并将结果返回
实现源码如下
1 | class Solution { |