leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

0074.cpp (1651B)


0 class Solution {
1 public:
2 bool searchMatrix(vector<vector<int>> &matrix, int target) {
3 int n = matrix.size(), m = matrix[0].size(), row = n - 1;
4 for (int i = 0; i < n - 1; i++) {
5 if (matrix[i + 1][0] > target) {
6 row = i;
7 break;
8 }
9 }
11 int low = 0, high = m - 1;
12 while (low <= high) {
13 int mid = low + (high - low) / 2;
14 if (matrix[row][mid] == target)
15 return true;
16 else if (matrix[row][mid] < target)
17 low = mid + 1;
18 else
19 high = mid - 1;
20 }
21 return false;
22 }
23 };
25 // Treat the matrix as a sorted list
26 class Solution {
27 public:
28 bool searchMatrix(vector<vector<int>> &matrix, int target) {
29 int n = matrix.size(), m = matrix[0].size();
30 int low = 0, high = m * n - 1;
31 while (low <= high) {
32 int mid = low + (high - low) / 2;
33 if (matrix[mid / m][mid % m] == target) return true;
34 if (matrix[mid / m][mid % m] < target)
35 low = mid + 1;
36 else
37 high = mid - 1;
38 }
39 return false;
40 }
41 };
43 // Binary Search Tree
44 class Solution {
45 public:
46 bool searchMatrix(vector<vector<int>> &matrix, int target) {
47 int n = matrix.size(), m = matrix[0].size();
48 int row = 0, col = m - 1;
50 while (row < n && col > -1) {
51 if (matrix[row][col] == target) return true;
52 if (target > matrix[row][col])
53 row++;
54 else
55 col--;
56 }
57 return false;
58 }
59 };