关于Two Sum问题中数据重复的问题
来源:4-4 使用查找表的经典问题 Two Sum
ChlZhYa
2018-03-03
老师在课程中说。如果直接把数组中所有的元素放进 map 中。当数组中出现重复元素时,会覆盖索引值,出现问题。但是我研究了一下。
按照这种方式编码。如果出现重复,假设数组为{42,42}时,(42,1)这个键值对会覆盖(42,0)这个键值对,所以一个数字在map中对应的索引,是这个数字在数组中最后出现的位置。
而当我们第二次遍历map时,是从头开始遍历的。当第一个42出现时,我们判断map.get(84 - 42)时,正好得到的是第二个42的索引。当前的 i 是第一个42的索引。所以得到的两个索引不会出现重复的情况。是可以得到正确的解的。
表达不是很清晰。。不知道老师能不能看懂。。
写回答
3回答
-
能看懂!大赞!你说的对!
由于这个题目保证输入数据有解且只有唯一解,找到这个解就好了,你说的逻辑是完全没问题的。我在课程的官方github上添加了你的代码和解决思路,链接在这里:
C++:
Java:
感谢分享!
如果愿意可以加我的微信:liuyubobobo。我会给你发一个小红包:)
112018-03-03 -
weixin_慕标9554468
2020-06-21
可惜没有给问题的点赞按钮
00 -
慕工程4033812
2019-05-30
赞!!!!
00
相似问题