版权归作者所有,转载请注明出处
题目描述
整体上看是一道很简单的题目,我使用了两种解法:暴力解法和hashmap解法
代码
暴力法:
hashmap解法:
解题效率
暴力法效率:
hashmap法效率:
解释
暴力法:就是通过双循环嵌套,逐个进行对比,当两个元素之和等于目标值时,停止循环,输出两个元素的下标。
hashmap法:将元素的值逐一作为字典的键,下标作为字典的键对应的值,再进行遍历,对每一个原list中的下标和值,将j赋值为dict中的目标和减去该次遍历的原list的值获得的下标,即对应该dict中所需键的值,直接去dict中获取该值(下标),若找到了,即j不为空,且不等于该次遍历的原list中的下标,则停止循环并输出。可理解为使用字典记录了所需值的值和下标,而节省了再去查找第二个所需元素的位置的过程。
因此可以明显看出区别,类hashmap法可明显加快算法速度,但却需要额外的空间去存储。而暴力法只需要同一个list进行计算,但却需要逐一对比寻找第二个所需元素的下标,因此算法效率较低。