javascript - JS : can a hash map be used to keep track while iterating this array?

标签 javascript algorithm

我正在尝试练习一些算法问题,但我对解决这个问题的最佳方法感到困惑。我显然可以嵌套 for 循环,但这似乎效率不高。我可以使用 HashMap 来跟踪温度和温度的索引吗?

给定一个每日温度列表,针对输入中的每一天生成一个列表,告诉您必须等待多少天才能变暖。如果没有可能的 future 日期,请改为输入 0。 例如,给定列表温度 = [73, 74, 75, 71, 69, 72, 76, 73],您的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。

最佳答案

有几个不同的技巧可以用于此技巧。 @PlatypusMaximus 试图向您指出一个在您从末尾迭代时有效的方法,但您也可以在向前迭代时这样做,我认为这样更容易理解:

  1. 在遍历数组时,您保留了一个索引列表,其中未分配“最接近温暖的一天”。此列表最初为空。

  2. 对于每个元素,从列表中删除温度较低的所有索引,并将它们的“最接近温暖的一天”分配给当前索引。

  3. 当您到达末尾时,列表中剩余的任何索引都没有“最接近温暖的一天”,并得到 0。

技巧是这样的:无论何时向列表中添加一个元素,所有前面的元素都等于或大于。因此,索引列表仍按温度降序排列。在步骤 (2) 中,这意味着您只需要查看列表末尾的元素(您可以使用堆栈)而不是搜索它,结果是整个过程花费 O(N) 时间。

关于javascript - JS : can a hash map be used to keep track while iterating this array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51803418/

相关文章:

javascript - 将数字转换为最接近的 10 的倍数

javascript - 高阶函数 - Javascript

string - 超大字符串之间的最长公共(public)子序列

java - 何时应用操纵随机访问列表的算法?

algorithm - 确定 Openstreetmap 路由算法中的边界框大小

algorithm - 括号查找算法lua?

algorithm - 确定多个函数调用的运行时间

javascript - D3 中的过滤选项

javascript - 发电机真的有侵入性吗

javascript - Array 构造函数的合法使用