1.題目
- 在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序排序扔字,每一列都按照從上到下遞增的順序排序囊嘉。請(qǐng)完成一個(gè)函數(shù),輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù)啦租,判斷數(shù)組中是否含有該整數(shù)哗伯。
2.解題思路
從左往右遞增荒揣,從上到下遞增篷角,則判斷要從左下角或右上角開(kāi)始。
-
若從左下角開(kāi)始系任,
- 比較該數(shù)x與輸入數(shù)n的大小恳蹲,若x>n,則比較位置向上。直到x<n,則比較位置向右移動(dòng)一位俩滥。
- 重復(fù)1過(guò)程嘉蕾,直到x==n(含有)或循環(huán)完整個(gè)表(不含有)。
輸入n為12霜旧,則從左下角開(kāi)始错忱,
x=13>n=12向上,x=8<n=12,向上結(jié)束以清,開(kāi)始向右儿普,
x=12==n=12,則包含該整數(shù)掷倔。輸入n為9眉孩,則從左下角開(kāi)始,
x=13>n=9勒葱,向上浪汪,x=8<n=9,向右凛虽,
x=12>n=9死遭,向上,x=6<n=9凯旋,向右殃姓,
x=8<n=9,向右瓦阐,x=15>n=9蜗侈,向上,
x=11>n=9睡蟋,向上踏幻,循環(huán)完整個(gè)表,則不包含該整數(shù)戳杀。
3.code
public class Solution {
public boolean Find(int [][] array,int target) {
int len=0;
if(array.length!=0){
len=array.length-1;
}else{
return false;
}
int i=0;
while((len>=0)&&(i<array[0].length)){
if(array[len][i]>target){//列數(shù)向上
len--;
}else if(array[len][i]<target){//行數(shù)向右
i++;
}else{
return true;
}
}
return false;
}
}