1.查找法
两层遍历,最直观
时间复杂度: O(N*N)
代码实现:
public int[] twoSum(int[] numbers, int target) {
// write your code here
int[] result = new int[2];
int firstIndex = 0;
int secondIndex = 0;
for (int i = 0; i < numbers.length - 1; i++) {
firstIndex = i;
for (int j = i + 1; j < numbers.length; j++) {
secondIndex = j;
if ((numbers[firstIndex] + numbers[secondIndex]) == target) {
result[0] = firstIndex;
result[1] = secondIndex;
}
}
}
return result;
}
2. 利用Map
时间复杂度:O(N)
第一遍遍历:将(target-a)和i 作为键值对,存入Hash表,遍历时间复杂度为O(n),
第二遍遍历:查询在Hash表中有和当前数相同的key,每次查询时间复杂度为O