第一种是比较简单粗暴的方法,两个for循环,时间复杂度为O(n^2),可以Accept:
<code>
public class Solution {
public int[] twoSum(int[] nums, int target) {
int[] index=new int[2];
for(int i=0;i<nums.length;i++){
for(int j=i+1;j<nums.length;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。
<code>
import java.util.HashMap;
public class Solution {
public int[] twoSum(int[] nums, int target) {
int[] index=new int[2];
HashMap<Integer,Integer> map = new HashMap<>();
for(int i = 0; i<nums.length; 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)