二维数组中的查找
题目
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路
查找整数时,如果从左上角开始查找,情况较为复杂,可以转换思路,从右上角开始查找:左边数字比较小,下边数字比较大,容易进行判断。
当我们需要解决一个复杂的问题是,一个很有效的办法就是从一个具体的问题入手,通过分析简单具体的例子,寻找普遍规律。
测试用例:
- 要查找的数字在数组中
- 要查找的数字不在数组中
- 数组为空
- 数组不满足大小规则
- 数组每行长度不一致
Java代码及复杂度
1 | public class FindInPartiallySortedMatrix { |
在同一个类中,与上面的函数拆开的测试代码,为了函数更加简洁。
1 | public class FindInPartiallySortedMatrix { |
不含测试代码(简化版)
上面代码考虑了数组数字大小不符合规则的情况,较为繁琐。下面为剑指Offer4 二维数组中的查找(简化版):
1 | public class Solution { |