diff options
Diffstat (limited to 'erect_fence.rs')
-rw-r--r-- | erect_fence.rs | 27 |
1 files changed, 0 insertions, 27 deletions
diff --git a/erect_fence.rs b/erect_fence.rs deleted file mode 100644 index 6dee425..0000000 --- a/erect_fence.rs +++ /dev/null @@ -1,27 +0,0 @@ -use std::collections::VecDeque; -type Tree = Vec<i32>; -struct Solution; - -impl Solution { - pub fn outer_trees(mut trees: Vec<Tree>) -> Vec<Tree> { - fn cross(a: &Tree, b: &Tree, c: &Tree) -> i32 { - return (c[1] - a[1]) * (a[0] - b[0]) - (a[1] - b[1]) * (c[0] - a[0]) - } - trees.sort(); - let mut dv: VecDeque<Tree> = VecDeque::new(); - for t in trees { - while dv.len() >= 2 && cross(&dv[dv.len() - 1], &dv[dv.len() - 2], &t) < 0 { - dv.pop_back(); - } - dv.push_back(t.clone()); - while dv.len() >= 2 && cross(&dv[0], &dv[1], &t) > 0 { - dv.pop_front(); - } - dv.push_front(t.clone()); - } - let mut fence = Vec::from(dv); - fence.sort_unstable(); - fence.dedup(); - fence - } -} |