二维数组中的查找

题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

思路:每行从左往右递增;每列从上往下递增。此时左上角的值最小,右下角的值最大。此时可以从右上角开始,比target小,就往下走,大就往左走,相等就跳出循环。循环截止的条件是 走到左下角。即i(行)小于最大行数,j(列)大于-1。

public boolean Find(int target, int [][] array) {
        int hang_len = array.length;
        int lie_len = array[0].length;
        int i=0, j = lie_len-1;
        boolean flag = false;
        while((i<hang_len)&&(j>=0)) {
        	int num = array[i][j];
        	if(target<num) {
        		j--;
        	}
        	else if(target>num) {
        		i++;
        	}
        	else {
        		flag = true;
        		break;
        	}
        }
       
        if(flag)
    	   return true;
        else 
    	   return false;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章