记录Leetcode刷题遇到的错误
程序代码(C++):
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { int rows = matrix.size(); int cols = matrix[0].size(); if(rows == 0 || cols == 0) return false; return binarySearch(matrix, target, 0, cols - 1, rows, cols); }
报错代码:
执行出错信息: Line 923: Char 9: runtime error: reference binding to null pointer of type 'std::vector<int, std::allocator<int> >' (stl_vector.h)
最后执行的输入:
[]
0
报错原因:
输入为空时的判断。当rows=0的时候,数组不存在元素,也就不存在matrix[0],matrix[0]产生越界。
程序修改:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { int rows = matrix.size(); if(rows == 0) return false; int cols = matrix[0].size(); if(cols == 0) return false; return binarySearch(matrix, target, 0, cols - 1, rows, cols); }