Skip to content

Commit b0ae1eb

Browse files
committed
feat: add solution for last stone weight
1 parent 6a58f99 commit b0ae1eb

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

src/easy/last_stone_weight.rs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#![allow(dead_code)]
2+
use std::collections::BinaryHeap;
3+
4+
fn last_stone_weight(stones: Vec<i32>) -> i32 {
5+
let mut max_heap = BinaryHeap::from(stones);
6+
while max_heap.len() > 1 {
7+
let stone1 = max_heap.pop().unwrap();
8+
let stone2 = max_heap.pop().unwrap();
9+
if stone1 != stone2 {
10+
max_heap.push(stone1 - stone2);
11+
}
12+
}
13+
*max_heap.peek().unwrap_or(&0)
14+
}
15+
16+
#[cfg(test)]
17+
mod tests {
18+
use super::*;
19+
20+
#[test]
21+
fn test_1() {
22+
let stones = vec![2, 7, 4, 1, 8, 1];
23+
assert_eq!(last_stone_weight(stones), 1);
24+
}
25+
26+
#[test]
27+
fn test_2() {
28+
let stones = vec![1, 3];
29+
assert_eq!(last_stone_weight(stones), 2);
30+
}
31+
32+
#[test]
33+
fn test_3() {
34+
let stones = vec![1];
35+
assert_eq!(last_stone_weight(stones), 1);
36+
}
37+
}

0 commit comments

Comments
 (0)