Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].
to see which companies asked this question.
Show Similar Problems
package TWO_SUM_001;import java.util.Arrays;public class Main { public static void main(String[] args) { int nums[] = {2,7,11,15}; int num[] = twoSum(nums,9); print(num); } private static void print(int[] num) { if (num != null && num.length>0) { for (int n:num) { System.out.print(n+" "); } } } public static int[] twoSum(int[] nums, int target) { int[] array = new int[2]; //1:首先对数组中数字排序 Arrays.sort(nums); //2: int start = 0;//下标 int end = nums.length-1;//下标 //从两边向中间靠拢 while (start < end) { //找到输入的结果直接返回 if (nums[start]+nums[end] == target) { if (nums[start] > nums[end]) { array[0] = end+1; array[1] = start+1; } else { array[0] = start+1; array[1] = end+1; } break; } else if (nums[start]+nums[end] > target) { //如果大于右边的值end-- end--; } else { start++; } } return array; }}