LeetCode报错,为什么会执行错误?

题目描述:
image.png
我的代码:

int* nextGreaterElement(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize) {
    int* res = (int*)malloc(nums1Size * sizeof(int)); // 为结果数组分配内存
        int* hashmap = (int*)malloc(nums2Size * sizeof(int));
        int* st = (int*)malloc(nums2Size * sizeof(int)); // 使用数组实现栈
        int stTop = -1; // 栈顶指针的初始值为-1,表示栈为空

        // 计算nums2中每个元素的"下一个更大元素"并保存到hashmap中
        for (int i = nums2Size - 1; i >= 0; --i) {
            int num = nums2[i];
            while (stTop >= 0 && num >= st[stTop]) {
                // 如果栈不为空且当前元素比栈顶元素大,则出栈
                --stTop;
            }
            hashmap[num] = stTop < 0 ? -1 : st[stTop];
            // 将当前元素入栈
            st[++stTop] = num;
        }

        // 根据nums1中的元素在hashmap中查找对应的"下一个更大元素"
        for (int i = 0; i < nums1Size; ++i) {
            res[i] = hashmap[nums1[i]];
        }

    return res; // 返回结果数组的指针
}

报的错误:
image.png

我的代码在VS 2022上可以运行,不知道错误原因在哪

阅读 591
1 个回答

hashmap[num]: num 是数组里的数,它的范围会超过 hashmap 的长度。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进