这个两数之和与167里面的是不同的,这个不是有序的,所以不能用两个指针的方法,除了暴力遍历以外,可以使用hashmap去记录下标的方式,这样找数字的下标就会变得容易,这里还有一个比较巧妙的是找的是和target相减的数字,就是我遍历一个数组,发现相减的存在了,那就是两个数都在了。
而且即使里面有相同的元素也不怕,题里面是这样说的——每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。所以存在相等的元素只能是两个相等的刚好相加等于target,这个时候也是可以正常输出的,因为第一次会将这个元素放进map,第二次才会知道他们相加等于target,所以可以找到正确的下标。
代码:
https://github.com/hanleirx/LeetCode/blob/master/1.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C
网友评论