剑指Offer04:二维数组中的查找 C# 以及交错数组越界问题IndexOutOfRangeException
数组越界异常
在该题目提交的时候报错:
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array. Line 5: Solution.FindNumberIn2DArray(Int32[][] matrix, Int32 target) in Solution.cs Line 39: __Driver__.Main(String[] args) in __Driver__.cs
在int [][] martix={}
的情况下matrix[0].length
会出现数组越界异常。因为如果数组martix={}
,则不存在matrix[0]
这样的情况,此时数组下标已经越界.
只有满足matrix.length=1
,才可以去判断 matrix[0].length==0
(列数=0)
所以在执行matrix[0]
访问操作的前要确保数组存在且开辟了内存。
public class Solution {
public bool FindNumberIn2DArray(int[][] matrix, int target) {
//左下角开始
//行
int row = matrix.Length-1;
//列
int col = 0;
//如果是col<matrix[0].Length&&row>=0就会先执行数组下标访问导致越界
while (row>=0&&col<matrix[0].Length)
{
int value = matrix[row][col];
Console.WriteLine(value);
if ( value== target)
{
return true;
}
if (value > target)
{
row--;
continue;
}
if (value < target)
{
col++;
}
}
return false;
}
}