Two sum

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,

return [0,1].

我的第一想法,暴力破解,用两个for循环来求解,代码如下:

暴力破解

时间复杂度为\omicron (n^2 ),对于每一个元素,我们都需要花费\omicron (n)的时间去计算,一共n个元素,所以总的时间复杂度为\omicron (n^2).

运行时间

显然,运行时间太长,超过了大部分人,所以对算法进行改进,使用字典来存数据:

用字典存入数字和下标


新的运行时间

因为类似与hashmap的结构,使用字典在存取数据时的复杂度为\omicron (1),所以一共的时间复杂度为\omicron (n),远小于前一个,从直观的数字上也可以看出来,相同的一组数据运行时间相差很多,但是第二个方法对内存的要求就更高了一点.

再对第二个方法进行修改,只使用一个for循环,当查找过后无符合条件数据的时候我们再进行当前数据和下标的存储.


一个for循环
运行时间

时间复杂度上和空间复杂度上都有一定优化.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容