您的位置:首页 > 其它

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

2016-10-16 12:50 183 查看
/*
 * 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
 * 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
 *
 * 思路:每一行,下面的比上面的大,每一列右边的比左边的大。
 * 从左下角开始,如果目标比开始位置的数小,则行坐标上移-1,如果比开始的位置大,列坐标右移+1
 *
 * 如果是正方形,最多循环n+m次,算法的时间复杂度为线性o(max(n,m))
*/
 
public
class
metrixfind {
   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));
   }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐