二维数组查找

剑指offer中一个题目,用递归实现

public class Solution {
    public boolean Find(int target, int [][] array)
    {
        if (array.length == 0)
        {
            return false;
        }

        if (array[0].length == 0)
        {
            return false;
        }
        return FindInternal(target, array, 0, 0, array[0].length, array.length);
    }

    public boolean FindInternal(int target, int [][] array, int startRow, int startCol, int width, int height)
    {
        if (width <= 0 || height <= 0)
        {
            return false;
        }

        if (width == 1 && height == 1)
        {
            return target == array[startRow][startCol];
        }

        int rowMove = (height - 1) / 2;
        int colMove = (width - 1) / 2;

        int middleRow = startRow + rowMove;
        int middleCol = startCol + colMove;

        int leftwidth = 1 + colMove;
        int topHeight = 1 + rowMove;

        int rightWidth = width - leftwidth;
        int bottomHeight = height - topHeight;

        int middle = array[middleRow][middleCol];

        if (target == middle)
        {
            return true;
        }else if (target < middle)
        {
            boolean a = FindInternal(target, array, startRow, middleCol + 1, rightWidth, topHeight);
            if (a)
                return true;
            boolean b = FindInternal(target, array, middleRow + 1, startCol, leftwidth, bottomHeight);
            if (b)
                return true;
            return FindInternal(target, array, startRow, startCol, leftwidth, topHeight);
        }else
        {
            boolean a = FindInternal(target, array, startRow, middleCol + 1, rightWidth, topHeight);
            if (a)
                return true;
            boolean b = FindInternal(target, array, middleRow + 1, startCol, leftwidth, bottomHeight);
            if (b)
                return true;
            return FindInternal(target, array, middleRow + 1, middleCol + 1, rightWidth, bottomHeight);
        }


    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容