1. Two Sum

  两数之和的第一个版本:给定一个整形数组和一个整数target,如果在数组中存在两个元素之和为target,则返回这两个元素的下标。

1. Two Sum_第1张图片

  1.暴力求解法(brute force)

  我的第一个思路当然是暴力求解法(brute force),这种方法只需要两重循环即可,其实是一种排列组合的方式,求出所有可能的组合方式,然后从其中查找是否存在和为target的组合,如果有则返回对应的下标。这种方法的时间复杂度为O(n2),空间复杂度为O(1)。

1. Two Sum_第2张图片

  2.双重哈希表

  为了减少查找target - nums[i]的时间复杂度,这里采用哈希表对数组元素和元素下标做一个映射,减少查找时间。1. Two Sum_第3张图片

  3.单通哈希表

  这种方式其实是在做哈希映射的同时查找target - nums[i]是否已经在哈希表中,我的最终解法也是这种方式。

1. Two Sum_第4张图片

  我的解法:

1. Two Sum_第5张图片

 最后两种方法的时间复杂度和空间复杂度是相同的,第三种方法的常量因子相对较小。

你可能感兴趣的:(LeetCode)