期间在写牛客的选择题和项目耽搁了很久,现在开始刷算法。
题目001
很久之前写过,用的暴力法,直接使用嵌套for循环遍历数组找到和为目标值的数返回。
时间复杂度O(n^2) n为数组长度
空间复杂度O(1) 用到了一个临时变量
这次使用了哈希表法,
将数组当前的数和目标值相减,差值如果存在于哈希表中则找到对应的数,如不存在则放入哈希表中。
数组中第一个数之前哈希表必定为空,所以可以直接放入哈希表,for循环从下标1,即数组的第二个数开始。
由于题目规定必定存在,所以最后可以直接返回随便一个数组。
使用了用时间换空间的思想。
由于时间复杂度和哈希表长度直接相关所以空间复杂度没有太高的增加。
时间复杂度O(n) n为数组长度
空间复杂度O(n) 哈希表中最多需要n-1个键值对