我正在尝试练习一些算法问题,但我对解决这个问题的最佳方法感到困惑。我显然可以嵌套 for 循环,但这似乎效率不高。我可以使用 HashMap 来跟踪温度和温度的索引吗?
给定一个每日温度列表,针对输入中的每一天生成一个列表,告诉您必须等待多少天才能变暖。如果没有可能的 future 日期,请改为输入 0。 例如,给定列表温度 = [73, 74, 75, 71, 69, 72, 76, 73],您的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。强>
最佳答案
有几个不同的技巧可以用于此技巧。 @PlatypusMaximus 试图向您指出一个在您从末尾迭代时有效的方法,但您也可以在向前迭代时这样做,我认为这样更容易理解:
在遍历数组时,您保留了一个索引列表,其中未分配“最接近温暖的一天”。此列表最初为空。
对于每个元素,从列表中删除温度较低的所有索引,并将它们的“最接近温暖的一天”分配给当前索引。
当您到达末尾时,列表中剩余的任何索引都没有“最接近温暖的一天”,并得到 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/