您的位置:首页 > Web前端

《剑指offer》二维数组中的查找

2017-06-25 22:12 267 查看
解法1:属于比较传统的不转弯的解法,时间复杂度以及空间复杂度比较大

public class Solution {
public boolean Find(int target, int [][] array) {
if(array.length==0){
return false;
}
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++){
if(array[i][j]==target){
return true;
}
}
}

return false;
}
}


解法2:从左下角开始搜

public static boolean Find(int target, int [][] array) {
int length=array.length-1;
int i=0;
while(length>=0&&(i<array[0].length)){ //从左下角开始搜索
if(array[length][i]<target){
i++;
}else if(array[length][i]>target){
length--;
}else{
return true; //就是该值了
}
}
return false;
}

解法3:和解法1类似,因为从左到右是有序的,所以每一行用二分查找
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: