aboutsummaryrefslogtreecommitdiff
path: root/rust/saddle-points/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rust/saddle-points/src/lib.rs')
-rw-r--r--rust/saddle-points/src/lib.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/rust/saddle-points/src/lib.rs b/rust/saddle-points/src/lib.rs
new file mode 100644
index 0000000..7123243
--- /dev/null
+++ b/rust/saddle-points/src/lib.rs
@@ -0,0 +1,16 @@
1fn is_min(mat: &[Vec<u64>], col: usize, row: usize) -> bool {
2 (0..mat.len()).all(|r| mat[r][col] >= mat[row][col])
3}
4
5pub fn find_saddle_points(input: &[Vec<u64>]) -> Vec<(usize, usize)> {
6 let mut res = vec![];
7 for (row,relem) in input.iter().enumerate() {
8 let m = relem.iter().max();
9 for (col,celem) in relem.iter().enumerate() {
10 if (m == Some(celem)) && is_min(input,col,row) {
11 res.push((row,col));
12 }
13 }
14 }
15 res
16}