标签:style blog color 使用 io strong for ar art
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
For example,
Consider the following matrix:
[
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
Given target = 3, return true.
思路:将矩阵看做行优先的有序数组,直接使用二分查找即可。
1 class Solution { 2 public: 3 bool searchMatrix( vector<vector<int>> &matrix, int target ) { 4 if( matrix.empty() ) { return false; } 5 int rows = matrix.size(), cols = matrix[0].size(); 6 int start = 0, end = rows*cols-1; 7 while( start <= end ) { 8 int middle = ( start + end ) / 2; 9 if( matrix[middle/cols][middle%cols] < target ) { 10 start = middle + 1; 11 } else if( matrix[middle/cols][middle%cols] > target ) { 12 end = middle - 1; 13 } else { 14 return true; 15 } 16 } 17 return false; 18 } 19 };
每次选取矩阵右上角的元素与target进行比较:若matrix[0][cols-1]<target,则可排除第cols-1列;若matrix[0][cols-1]>target,则可排除第0行。
1 class Solution { 2 public: 3 bool searchMatrix( vector<vector<int>> &matrix, int target ) { 4 if( matrix.empty() ) { return false; } 5 int rows = matrix.size(), cols = matrix[0].size(); 6 int i = 0, j = cols - 1; 7 while( i < rows && j >= 0 ) { 8 if( matrix[i][j] == target ) { return true; } 9 if( matrix[i][j] < target ) { 10 ++i; 11 } else { 12 --j; 13 } 14 } 15 return false; 16 } 17 };
标签:style blog color 使用 io strong for ar art
原文地址:http://www.cnblogs.com/moderate-fish/p/3932542.html