滑动窗口最大分​​割问题

时间:2020-04-26 06:09:38

标签: c++ segmentation-fault deque

我尝试使用Hackerrank(Deque-stl)上的双端队列问题来解决最大滑动窗口问题。我遵循了this链接上给出的算法。我不想复制该解决方案,所以我尝试编写自己的解决方案。但是我的代码给了我“细分错误”,我不明白我的代码有什么问题。谁能解释我的代码中的错误?

module X1_Specialized : X = struct
  //how use x from X1 module here?
  let y = 10;
end

1 个答案:

答案 0 :(得分:1)

我不确定算法是否正确,但是有2行会导致细分错误:

while((arr[l+1]>arr[q.back()])&&(!q.empty()))

原因是您在q.back()之前检查q.empty()是否为空,结果将是未定义的行为。更改为:

while((!q.empty())&&(arr[l+1]>arr[q.back()]))

这样,它将首先检查是否为空,并在检查q.back()并给出分段错误之前制动循环是否为空。

第二行是:

while(q.front()<=j-k)
    q.pop_front();

我认为您应该像第一行一样检查它是否为空。