您的位置:首页 > 其它

leetCode 1. Two Sum

2017-07-30 18:19 169 查看
看似是一道简单的题,使用双层for循环,依次取值,和之后的值依次相加,知道和为期望值sh时输出,时间复杂度O(n²)

public int[] twoSum(int[] nums, int target) {

int result[] = new int[2];
int length = nums.length;

for (int i = 0; i < length; i++){
for(int j = i+1; j<length;i++)
{
if(nums[i] + nums[j] == target){
result[0] = i;
result[1] = j;
return result;
}
}
}

return result;
}


结果性能截图



上网搜的高性能算法,遍历一遍数组后就可以获得结果,思路初始化一个map,key为数组的值,value为数组的角标,一次取值v,如果Map.get(target-v)存在,则返回,否则将其值放入map,减少了比较的算法和一层for循环

public int[] twoSum(int[] nums, int target) {

Map<Integer,Integer> map = new HashMap<>();
int arr[]= new int[2];
int len = nums.length;

for(int i = 0; i< len;i++){
if(map.get(target-nums[i]) != null && map.get(target-nums[i]) >= 0)
{

arr[0] = map.get(target-nums[i]);
arr[1] = i;
return  arr;
}else{
map.put(nums[i],i);
}
}

return arr;
}


性能截图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode