解法一,我自己想的,有点弱,时间复杂度O(n^2)。
public class Solution {
public int[] twoSum(int[] numbers, int target) {
int[] result = new int[2];
for (int i = 0; i < numbers.length; i++) {
for (int j = i + 1; j < numbers.length; j++) {
if (numbers[i] + numbers[j] == target) {
result[0] = i;
result[1] = j;
}
}
}
if (result[0] == 0) {
if (result[1] != 1) {
int tmp = numbers[0];
numbers[0] = numbers[1];
numbers[1] = tmp;
result[0] = 1;
} else {
int tmp = numbers[1];
numbers[1] = numbers[2];
numbers[2] = tmp;
result[1] = 2;
tmp = numbers[0];
numbers[0] = numbers[1];
numbers[1] = tmp;
result[0] = 1;
}
}
return result;
}
public void arrayPrint(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
System.out.println();
}
public static void main(String[] args) {
int[] numbers = { 11, -22, 12, 7, 2 };
int target = 9;
Solution mSolution = new Solution();
mSolution.arrayPrint(numbers);
int[] result = mSolution.twoSum(numbers, target);
mSolution.arrayPrint(result);
mSolution.arrayPrint(numbers);
}
}
public int[] twoSum_2(int[] numbers, int target) {
int[] result = new int[2];
HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>();
for(int i = 0; i < numbers.length; i++) {
if(hm.get(target - numbers[i]) != null) {
result[0] = hm.get(target - numbers[i]);
result[1] = i;
} else {
hm.put(numbers[i], i);
}
}
if (result[0] == 0) {
if (result[1] != 1) {
int tmp = numbers[0];
numbers[0] = numbers[1];
numbers[1] = tmp;
result[0] = 1;
} else {
int tmp = numbers[1];
numbers[1] = numbers[2];
numbers[2] = tmp;
result[1] = 2;
tmp = numbers[0];
numbers[0] = numbers[1];
numbers[1] = tmp;
result[0] = 1;
}
}
return result;
}
【leetcode系列】Two Sum,布布扣,bubuko.com
原文地址:http://blog.csdn.net/a2bgeek/article/details/38382529