Third Maximum Number
Este problema consiste en encontrar el tercer número más grande
Solución
impl Solution {
pub fn third_max(nums: Vec<i32>) -> i32 {
if nums.len()<3{
return *nums.iter().max().unwrap();
}
let mut first: Option<i32> = None;
let mut second: Option<i32> = None;
let mut third: Option<i32> = None;
for var in nums{
if first == Some(var) || second == Some(var) || third == Some(var) {
continue;
}
if first.map_or(true, |x| var > x) {
third = second;
second = first;
first = Some(var);
}
else if second.is_none() || var > second.unwrap(){
third = second;
second = Some(var);
}
else if third.is_none() || var > third.unwrap(){
third = Some(var);
}
}
if third.is_some(){
third.unwrap()
}else{
first.unwrap()
}
}
}
Este problema consiste en tener tres variables con valores nulos, y se itera en la lista una sola vez, cuando se encuentra un valor se pregunta si el valor existe y luego se encuentra en que posición debería ir