各位客官们,大家好,今天我将给大家讲一个关于二维搜索矩阵的简单方法,大家如果觉得好的话不妨给个免费点赞吧^ _ ^.
题目要求,如图所示:
此题我用的是堆的形式直接把二维数组转为一级数组,然后再用二分查找的方式,就能直接判别目标值了,代码如图所示:
c
int Binary_search(int* arr,int length,int target)
{
int left = 0;
int right = length - 1;
while(left <= right)
{
int mid = (left + right) / 2;
if(arr[mid] == target)
{
return 1;
}else if(target > arr[mid]){
left = mid + 1;
}else{
right = mid - 1;
}
}
return 0;
}
bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target) {
int col = *matrixColSize;
int total = matrixSize * col;
int* arr = (int*)malloc(sizeof(int) * total);
int len = 0;
int i = 0;
int j = 0;
for(i = 0;i < matrixSize;i++)
{
for(j = 0;j < col;j++)
{
arr[len] = matrix[i][j];
len++;
}
}
int ret = Binary_search(arr,len,target);
if(ret == 1)
return true;
else
return false;
}
好了,这就是我的代码,如果大家觉得好的话,不妨给个免费的赞吧 ^ _ ^.