二维数组中的查找
题目描述:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
解析:
数组是有序数组,从左到右、从上到下依次递增。选取矩阵左上、右上、左下、右下四个特殊点分析,将它们作为比较的起始点,矩阵中其他数字均比左上点大,比较时无法按规律遍历,右下点也同理。
这里我们以左下点为例:当需要查询的数字小于当前坐标下的数值时坐标上移,大于时坐标右移。当坐标超出范围即查找失败。
java版代码如下:
public class Solution {
public boolean Find(int target, int array) {
int i = array.length-1 ;
int j = 0 ;
while( i >=0 && j < array[0].length ){
if( array[i][j] > target){
i-- ;
}
else if( array[i][j] < target){
j++ ;
}else{
return true ;
}
}
return false ;
}
}

本文介绍了一种在有序二维数组中查找特定整数的高效算法。数组的每一行和每一列都按照递增顺序排列,通过从左下角开始,根据目标值与当前值的大小关系调整搜索方向,实现快速定位。
1036

被折叠的 条评论
为什么被折叠?



