题目:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
me题解:(暴力解法)
对于每个元素,通过遍历数组其他元素来寻找目标元素,耗费的时间复杂度为O(n),所以最终时间复杂度为O(n^2);
空间复杂度:O(1);
官方题解1:两遍哈希表
哈希表:空间换取时间
两次迭代:第一次迭代,使用哈希表中key存在数组元素,value存放数组下标;
第二次迭代,检查每个元素所对应的目标元素是否存在表中,目标元素不能是元素本身;
时间复杂度:O(n),把包含n个元素的数组遍历两次,由于哈希表将目标元素的查找时间缩短为O(1);
空间复杂度:O(n),所需的额外空间取决于哈希表中存储的元素数量,该表存储了n个元素;
官方题解2:一遍哈希表
在进行迭代并将元素插入哈希表时,可以检查哈希表中是否已经存在当前元素的目标元素,如果存在,则返回结果;
时间复杂度:O(n),遍历包含n个元素的数组一次,且在哈希表中查找目标元素的的时间复杂度为O(1);
空间复杂度:O(n),所需的额外空间取决于哈希表中存储的元素数量,该表存储了n个元素;