[LeetCode]167. Two Sum II

来源:互联网 发布:lol网络关注 编辑:程序博客网 时间:2024/06/03 21:10

Two Sum的变种。增加了新的条件,给出的数组元素是按照增序排列的。在新条件下不需要再用到HashMap,一定要利用好“sorted in ascending order”这个新特性。思路:Two Pointers + Binary Search。从首尾开始逼近我们想要的值……同时注意需要存放的下标的值。


Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.

The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.

You may assume that each input would have exactly one solution and you may not use the same element twice.

Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2



public class Solution {    public int[] twoSum(int[] numbers, int target) {        int[] res= new int[2];        int lefti, righti;        lefti=0;        righti=numbers.length-1;                while(lefti<righti){            int temp=numbers[lefti]+numbers[righti];            if(temp==target){                res[0]=lefti+1;                res[1]=righti+1;                break;            }else if(temp<target){                lefti++;            }else if(temp>target){                righti--;            }        }                return res;    }}


原创粉丝点击