剑指Offer5——二维数组中查找

在一个二维数组中,每一行都按照从左至右递增的顺序排序,每一列都按照从上至下递增的顺序排序。请写一个函数,输入这样一个数组和一个整数,判断整数是否存在于这个数组中。

题目分析:假设有数组为{{1, 3,  5,  7,  9},
                                            {2, 4,  6,  8, 10},
                                            {3, 5,   7,  9, 11},
                                            {4, 7, 10, 13, 16}}

对于下标为[0][4]的元素9,其所在列中所有的元素都比它大,其所在行中所有的元素都比它小,所以我们可以从[0][4]这个元素开始比较,如果输入的数字比它大,那么就可以排除掉第一行,如果输入的数字比它小,就可以排除掉最后一列。假设我们查找的数字是13,第一次比较完之后就可以排除掉第一行,然后我们需要在下面数组中重新继续查找
                                          {{2, 4,  6,  8, 10},
                                            {3, 5,   7,  9, 11},
                                            {4, 7, 10, 13, 16}}

同样取第一行最后一个元素10跟13比较,因为13>10,于是又排除掉一行,依次类推。

下面是代码实现:

import java.util.*;
import java.lang.*;

class Test
{  
    public static void main(String args[])
    {
        int[][] array = {{1, 3, 5, 7, 9},
					  {2, 4, 

猜你喜欢

转载自blog.csdn.net/kanglupeng/article/details/104210203