首页 > 解决方案 > 堆缓冲区溢出错误,Leetcode 问题 941,Valid Mountain Array,使用 C

问题描述

我目前正在学习 c 并尝试在 leetcode 上做一些问题以提高自己。问题:https
://leetcode.com/problems/valid-mountain-array/ 我收到这样的错误,错误消息显然是读取错误。
但是,每当我在我的电脑上运行我的代码时,即使使用 valgrind,我也不会收到任何错误。这是我的代码:

bool validMountainArray(int* arr, int arrSize)
{   
    bool is_m_array = false;
    bool peek = false; 
     int peek_point = 0;
    int end_of_slope = 0;
    int k = 0;
    if( arrSize >= 3)
    {
        while (arr[k] < arr[k+1] && arr[k] < arrSize)
        {
            k++;
        }
        peek = true;
        peek_point = k;
    }
    if (peek == true)
    {
        while(arr[peek_point] > arr[peek_point+1] && arr[peek_point] < arrSize)
    {
        peek_point++;
        end_of_slope = peek_point+1;
        printf("end Of SLOPE %d, arrSize %d \n", end_of_slope, arrSize);
    }
    }
    if (peek == true && end_of_slope == arrSize)
    {
        is_m_array = true;
    }
    return is_m_array;
}

我尝试了几种不同的输入,它们似乎都工作得很好!
例如:

int main(int argc, char const *argv[])
{   int arr[9]= {1,2,3,4,5,4,3,2,1};
    if (validMountainArray(arr, 9) == true)
    {
        printf("True");
    }
    else
    {
        printf("False");
    }
    return 0;
}

将返回 True。

有人知道我在这里缺少什么吗?

标签: cmemory-leaks

解决方案


推荐阅读