【发布时间】:2021-05-27 07:04:27
【问题描述】:
数组中两个元素之差为目标数 k 的对数是多少?蛮力是微不足道的,从每个索引开始,遍历所有即将到来的索引。我需要在 O(n) 中做到这一点。我知道使用哈希表可以做到这一点,但我听不懂。
示例: [2,5,4,1,7,4], k=3 这里有5对。 (2,5), (4,1), (4,7), (1,4), (7,4)
我将此问题定义为比 Leetcode 的子数组 Sum Equals K 更简单的问题。我想象 leetcode 问题具有相同的解决方案,只是它将应用于运行的 sum 数组。
【问题讨论】:
-
我不会回答这个问题,因为我很确定您可以在其他地方找到解决方案。最大的直觉是,如果你知道 k,你就知道每个元素都需要寻找什么补充(每个条目只有 2 个选项,对吧?)。那么,预处理计数器应该足够好了吗?好主意,至少。
-
如果你在数 (4, 7) 和 (7, 4),那么为什么要数其他对,例如 (2, 5) 和 (5, 2)?
-
数字 4 在列表中出现了两次,这表明可以通过两种方式制作 4-7 对。希望每对中的数字顺序无关紧要。
标签: python arrays algorithm hashtable