package solution;
/**
* https://oj.leetcode.com/problems/two-sum/
* Given an array of integers, 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. Input: numbers={2,
* 7, 11, 15}, target=9 Output: index1=1, index2=2
*/
public class Two_Sum {
public static void main(String[] args) {
int[] numbers = { 2, 7, 11, 15 };
int target = 9;
// Output: index1=1, index2=2
work(numbers, target);
}
/**
*
* @param numbers
* @param target
* @return
*/
private static int[] work(int[] numbers, int target) {
int[] result = new int[2];
for (int p = 0; p < numbers.length - 1; p++) {
for (int q = p + 1; q < numbers.length; q++) {
if (numbers[p] + numbers[q] == target) {
result[0] = p + 1;
result[1] = q + 1;
System.out.println(result[0] + " " + result[1]);
}
}
}
return result;
}
}
/**
* https://oj.leetcode.com/problems/two-sum/
* Given an array of integers, 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. Input: numbers={2,
* 7, 11, 15}, target=9 Output: index1=1, index2=2
*/
public class Two_Sum {
public static void main(String[] args) {
int[] numbers = { 2, 7, 11, 15 };
int target = 9;
// Output: index1=1, index2=2
work(numbers, target);
}
/**
* 假设numbers不空 假设numbers.length>1 假设numbers里面没有负数 假设target大于0 假设numers是递增有序的
* @param numbers
* @param target
* @return
*/
private static int[] work(int[] numbers, int target) {
int[] result = new int[2];
for (int p = 0; p < numbers.length - 1; p++) {
for (int q = p + 1; q < numbers.length; q++) {
if (numbers[p] + numbers[q] == target) {
result[0] = p + 1;
result[1] = q + 1;
System.out.println(result[0] + " " + result[1]);
}
}
}
return result;
}
}