繁体   English   中英

无法弄清楚我遇到分段错误的测试用例?

[英]Cant figure out the testcase where I am getting segmentation fault?

我遇到了一些未知测试用例的分段错误,我无法解决它。 它适用于大多数情况。 我只想知道在哪种情况下我会遇到分段错误。 该代码是为直方图中的问题 Maximim Rectangular Area 编写的。 你可以在这里查看这个问题: https://practice.geeksforgeeks.org/problems/maximum-rectangular-area-in-a-histogram-1587115620/1#

下面是代码:

 long long getMaxArea(long long arr[], int n)
    {
        int nsl[n];
        int nsr[n];
        stack<int>s;
        // nsl
        for(int i=0;i<n;i++)
        {
            if(i==0)
            {
                nsl[i]=-1;
                s.push(i);
            }
            else{
                while(!s.empty())
                {
                    if(arr[s.top()]<arr[i])
                    break;
                    s.pop();
                }
                if(s.empty())
                nsl[i]=-1;
                else
                nsl[i]=s.top();
                s.push(i);
            }
        }
        stack<int>st;
        // nsr
        for(int i=n-1;i>=0;i--)
        {
            if(i==n-1)
            {
                nsr[i]=n;
                st.push(i);
            }
            else{
                while(!st.empty())
                {
                    if(arr[st.top()]<arr[i])
                    break;
                    st.pop();
                }
                if(st.empty())
                nsr[i]=n;
                else
                nsr[i]=st.top();
                st.push(i);
            }
        }
        long long ans=0;
        for(int i=0;i<n;i++)
        ans=max(ans,arr[i]*(nsr[i]-nsl[i]-1));
        return ans;
    }

通过使用向量而不是数组来解决问题。 我只是对数组使用了错误的 c++ 语法,因此使用向量刚刚解决了它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM