20240716 Finished
This commit is contained in:
parent
63f0d092b9
commit
82cbf0c774
|
@ -174,4 +174,5 @@ mod p79_word_search;
|
||||||
mod p108_convert_sorted_array_to_binary_search_tree;
|
mod p108_convert_sorted_array_to_binary_search_tree;
|
||||||
mod p53_maximum_subarray;
|
mod p53_maximum_subarray;
|
||||||
mod p918_maximum_sum_circular_subarray;
|
mod p918_maximum_sum_circular_subarray;
|
||||||
mod p35_search_insert_position;
|
mod p35_search_insert_position;
|
||||||
|
mod p74_search_a_2d_matrix;
|
68
src/problem/p74_search_a_2d_matrix.rs
Normal file
68
src/problem/p74_search_a_2d_matrix.rs
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
/**
|
||||||
|
* [74] Search a 2D Matrix
|
||||||
|
*/
|
||||||
|
pub struct Solution {}
|
||||||
|
|
||||||
|
|
||||||
|
// submission codes start here
|
||||||
|
|
||||||
|
impl Solution {
|
||||||
|
pub fn search_matrix(matrix: Vec<Vec<i32>>, target: i32) -> bool {
|
||||||
|
let m = matrix.len();
|
||||||
|
let n = matrix[0].len();
|
||||||
|
|
||||||
|
// 左闭右开区间
|
||||||
|
let (mut lower, mut upper) = (0, m);
|
||||||
|
|
||||||
|
while lower < upper {
|
||||||
|
let middle = (upper - lower) / 2 + lower;
|
||||||
|
|
||||||
|
// WTF?
|
||||||
|
if lower == middle {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if target < matrix[middle][0] {
|
||||||
|
upper = middle;
|
||||||
|
} else {
|
||||||
|
lower = middle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let (mut left, mut right) = (0, n);
|
||||||
|
|
||||||
|
while left < right {
|
||||||
|
let middle = (right - left) / 2 + left;
|
||||||
|
|
||||||
|
if target > matrix[lower][middle] {
|
||||||
|
left = middle + 1;
|
||||||
|
} else {
|
||||||
|
right = middle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if left < n {
|
||||||
|
matrix[lower][left] == target
|
||||||
|
} else {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// submission codes end
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_74() {
|
||||||
|
let matrix = vec![vec![1, 3, 5, 7], vec![10, 11, 16, 20], vec![23, 30, 34, 60]];
|
||||||
|
|
||||||
|
assert!(Solution::search_matrix(matrix, 3));
|
||||||
|
|
||||||
|
let matrix = vec![vec![1]];
|
||||||
|
|
||||||
|
assert!(!Solution::search_matrix(matrix, 2));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user