Leetcode【1】-Two Sum--java实现

第一种是比较简单粗暴的方法,两个for循环,时间复杂度为O(n^2),可以Accept:

public class Solution {
public int[] twoSum(int[] nums, int target) {
int[] index=new int[2];
for(int i=0;i for(int j=i+1;j if(target==nums[i]+nums[j]){
index[0]=i;
index[1]=j;
return index;
}
}
}
return index;
}
}

第二种是用HashMap来做,1、HashMap要需要为每个元素创建key和value两个内存空间,辅助空间翻倍。本例子就是用value来放index;2、由于用value来放index,找到一个后,另外一个就马上可以得到其index。


import java.util.HashMap;
public class Solution {
public int[] twoSum(int[] nums, int target) {
int[] index=new int[2];
HashMap map = new HashMap<>();
for(int i = 0; i {
if(map.containsKey(target - nums[i]))
{
index[1] = i;
index[0] = map.get(target-nums[i]);
return index;
}else
{
map.put(nums[i],i);
}
}
return index;
}
}

第二种方法参考博客,感谢博主开拓思路(http://blog.csdn.net/waycaiqi/article/details/45898313)

你可能感兴趣的:(Leetcode【1】-Two Sum--java实现)