7.3—查找—Sear a 2D Matrix

来源:互联网 发布:激光洗眉机网络假货 编辑:程序博客网 时间:2024/06/14 02:03
描述
Write an efficient algorithm that searches for a value in an m×n matrix. is matrix has the following
properties:
Integers in each row are sorted from le to right.
The first integer of each row is greater than the last integer of the previous row.
For example, Consider the following matrix:
[
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
Given target = 3, return true.

#include<iostream>using namespace std;const int m = 3;const int n = 4;int r = -1;int c = -1;bool Searcha2DMatrix(int a[][n], int row,int k){int length = row*n;int begin = 0;int end = length - 1;while (begin <= end){int mid = (begin + end) / 2;r = mid / n;c = mid - mid / n*row;if (a[r][c] > k){end = mid - 1;}else if (a[r][c] < k){begin = mid + 1;}else{return true;}}return false;}int main(){int a[m][n] = { { 1, 3, 5, 7 }, { 10, 11, 16, 20 }, { 23, 30, 34, 50 } };int target = 15;bool flag = Searcha2DMatrix(a, m, target);if (flag)cout << "Found!"<<endl<<"Position is:" << r << " " << c << endl;elsecout << "Not Found!" << endl;}

阅读全文
0 0
原创粉丝点击