-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathleetcode_240.cpp
More file actions
93 lines (74 loc) · 2.05 KB
/
leetcode_240.cpp
File metadata and controls
93 lines (74 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
// 240. Search a 2D Matrix II
// https://leetcode.com/problems/search-a-2d-matrix-ii/
/*
Write an efficient algorithm that searches for a value target in an m x n integer matrix matrix. This matrix has the following properties:
Integers in each row are sorted in ascending from left to right.
Integers in each column are sorted in ascending from top to bottom.
Example 1:
Input: matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
Output: true
Example 2:
Input: matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
Output: false
Constraints:
m == matrix.length
n == matrix[i].length
1 <= n, m <= 300
-109 <= matrix[i][j] <= 109
All the integers in each row are sorted in ascending order.
All the integers in each column are sorted in ascending order.
-109 <= target <= 109
*/
#include <iostream>
#include <vector>
using namespace std;
// Function to search for target in a 2D matrix
// Time Complexity: O(m + n), where m is the number of rows and n is the number of columns
// Space Complexity: O(1), no extra space used
bool searchMatrix(vector<vector<int>> &matrix, int target)
{
if (matrix.empty() || matrix[0].empty())
return false;
int rows = matrix.size();
int cols = matrix[0].size();
int row = 0;
int col = cols - 1; // start from top-right
while (row < rows && col >= 0)
{
int current = matrix[row][col];
if (current == target)
{
return true;
}
else if (current > target)
{
col--; // move left
}
else
{
row++; // move down
}
}
return false;
}
int main()
{
// Example usage
vector<vector<int>> matrix = {
{1, 4, 7, 11, 15},
{2, 5, 8, 12, 19},
{3, 6, 9, 16, 22},
{10, 13, 14, 17, 24},
{18, 21, 23, 26, 30}};
int target = 5;
bool result = searchMatrix(matrix, target);
if (result)
{
cout << "Target " << target << " found in the matrix." << endl;
}
else
{
cout << "Target " << target << " not found in the matrix." << endl;
}
return 0;
}