1、暴力破解,双重循环
public int[] twoSum(int[] nums, int target) {
if (nums == null || nums.length == 1) {
return null;
}
int[] re = new int[2];
int len = nums.length;
int index2 = 0;
int index1 = 0;
Map<String, Integer> map = new HashMap<>();
boolean flag = false;
for (int i = 0; i < len; i++) {
index2 = i;
int num = nums[i];
if (num > target) {
continue;
} else {
if (!map.isEmpty()) {
Iterator<String> iterator = map.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
Integer value = map.get(key);
System.out.println("key=" + key + ",value=" + value);
if ((num + value) == target) {
index1 = Integer.parseInt(key);
flag = true;
break;
}
}
map.put(index2 + "", num);
} else {
map.put(index2 + "", num);
}
}
System.out.println("index1=" + index1 + "index2=" + index2
+ "flag=" + flag);
if (flag) {
re[0] = index1 + 1;
re[1] = index2 + 1;
break;
}
}
return re;
/*
* int len = nums.length; int[] index = new int[2];
*
* HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
*
* for (int i = 0; i < len; i++) { if (!map.containsKey(nums[i])) {
* map.put(target - nums[i], i); } else { index[0] = map.get(nums[i]) +
* 1; index[1] = i + 1; } }
*
* return index;
*/
}
2、使用hashmap
public class Solution {
public int[] twoSum(int[] nums, int target) {
if (nums == null || nums.length == 1) {
return null;
}
int len = nums.length;
int[] index = new int[2];
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < len; i++) {
if (!map.containsKey(nums[i])) {
map.put(target - nums[i], i);
} else {
index[0] = map.get(nums[i]) + 1;
index[1] = i + 1;
}
}
return index;
}
}