Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0,1].
我的第一想法,暴力破解,用两个for循环来求解,代码如下:
时间复杂度为,对于每一个元素,我们都需要花费的时间去计算,一共n个元素,所以总的时间复杂度为.
显然,运行时间太长,超过了大部分人,所以对算法进行改进,使用字典来存数据:
因为类似与hashmap的结构,使用字典在存取数据时的复杂度为,所以一共的时间复杂度为,远小于前一个,从直观的数字上也可以看出来,相同的一组数据运行时间相差很多,但是第二个方法对内存的要求就更高了一点.
再对第二个方法进行修改,只使用一个for循环,当查找过后无符合条件数据的时候我们再进行当前数据和下标的存储.
时间复杂度上和空间复杂度上都有一定优化.