题目地址:
今天刷剑指offer 二维数组的查找,发现了一个有意思的问题。
对于一个空的二维数组,其行列的长度分别为多少呢?
例如:int [][]plants = {{}};
int [][]plants={{}};
System.out.println(plants.length+" "+plants[0].length);
行长度palnts.length 和列长度 plants[0].length 分别为多少?
答案是 1 和 0 。
仔细想想,palnts.length若等于0不就变成一维数组了吗?对吧
回到题目
当数组为空时
plants.length=1,可以理解为强制最小取1
plants[i].length=0,此时下标i 什么都不能取,包括0,因为数组是空的
因此,解决方法:
1、在函数最前面先判断数组是否为空即palnts==null或者palnts.length是否=0
if(plants==null||plants.length==0) return false;
(顺序不可调换,若palnts.length==0在前面,则会报空指针异常)
2、利用逻辑运算的惰性求值或者短路原则,把plants[0].length放在逻辑符&&的右边
while(i >= 0 && j < plants[0].length)