实现代码
public class DemoApplicationTests {
@Test
public void contextLoads() {
int []nums ={2, 7, 11, 15};
int target = 9;
twoSum(nums,target);
}
/**
* 第一个想法的实现代码
* 时间复杂度(On^2)
* 空间复杂度(O1)
* @param nums
* @param target
* @return
*/
public int[] twoSum(int[] nums, int target) {
for (int i = 0; i < nums.length; i++) {
for (int j = i+1; j < nums.length; j++) {
if(nums[i]+nums[j]==target){
int[]result={i,j};
return result;
}
}
}
return null;
}
/**
* 可以用hash表
* @param nums
* @param target
* @return
*/
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map=new HashMap<>();
for (int i = 0; i < nums.length; i++) {
map.put(nums[i],i);
}
for (int i = 0; i < nums.length; i++) {
if(map.containsKey(target-nums[i])&& map.get(target-nums[i]) != i){
int[]result={i,map.get(target-nums[i])};
return result;
}
}
return null;
}
}