最近在看算法专栏,颇有感想,所以写几篇文章总结一下。
第一篇讲的是两数之和问题。
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
暴力解法就不说了,说一下稍微巧妙的解法
创建一个map,依次取数组中的值,如果map中存在和其相加等于目标值的数,返回这两个数的下标,否则将这个数加入map中。
这个方法主要是用空间换时间,多了一个map,但是少用了一层循环,将找两个数的问题变成了找一个数的问题。同时,我们不是直接将map作为数组的元素的拷贝。map中放的是当前寻找匹配值之前的数值。
网友评论