167. Two Sum II - Input array is sorted
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.
Note:
- 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.
Example:
Input: numbers = [2,7,11,15], target = 9 Output: [1,2] Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.
class Solution { public int[] twoSum(int[] numbers, int target) { int m = 0, n = numbers.length - 1; while(m < n){ if(numbers[m] + numbers[n] == target) return new int[] {m+1, n+1}; else if(numbers[m] + numbers[n] > target) n--; else m++; } return new int[] {0,0}; } }
1.查找
class Solution { public int[] twoSum(int[] nums, int target){ Map<Integer, Integer> map = new HashMap<>(); for(int i = 0; i < nums.length; i++){ int com = target - nums[i]; if(map.containsKey(com) && map.get(com) != i){ return new int[] {map.get(com) + 1, i + 1}; } map.put(nums[i],i); } return new int[] {0,0}; } }
2.老方法