每天一个算法之二维数组查找整数

来源:互联网 发布:发型设计软件免费版 编辑:程序博客网 时间:2024/05/17 09:02

/*

 * 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。

 * 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

 *

 * 思路:每一行,下面的比上面的大,每一列右边的比左边的大。

 * 从左下角开始,如果目标比开始位置的数小,则行坐标上移-1,如果比开始的位置大,列坐标右移+1

 *

 * 如果是正方形,最多循环n+m次,算法的时间复杂度为线性omaxnm))

*/

 

public classmetrixfind {

   publicstaticbooleanFind(int[][]array,inttarget)

   {

        /*二维数组的行数和列数*/

        int rowCount = array.length;

        int colCount = array[0].length;

 

        int i, j;//i指定行的变化,j指定列的变化

 

        //循环

        for (i = rowCount - 1, j = 0; i >= 0&& j<colCount;)

        {

            if (target == array[i][j])

                returntrue;

 

            if (target<array[i][j])

            {

                i--;

                continue;

            }

 

            if (target>array[i][j])

            {

                j++;

                continue;

            }

        }

        return false;

   }

   publicstaticvoidmain(String args[]){

    int[][] array={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

    System.out.println(Find(array,0));

   }

}
0 0
原创粉丝点击