作者:
yam276 ('_')
2025-05-11 15:53:311550. Three Consecutive Odds
https://leetcode.com/problems/three-consecutive-odds/
題意:陣列遇到連續三個奇數就回傳true
思路:簡單題目
如果只是要簡單解的話就
impl Solution {
pub fn three_consecutive_odds(arr: Vec<i32>) -> bool {
if arr.len() < 3 {
return false;
}
for i in 0..arr.len() - 2 {
if (arr[i] % 2 == 1 && arr[i + 1] % 2 == 1 && arr[i + 2] % 2 == 1)
{
return true;
}
}
false
}
}
但只是這樣太無聊了
我看到一種方法
impl Solution {
pub fn three_consecutive_odds(arr: Vec<i32>) -> bool {
let mut count = 0;
for val in arr.iter() {
count = (count + val % 2) * (val % 2);
if count >= 3 {
return true;
}
}
false
}
}
他利用(count + (val % 2)) * (val % 2))
count 加的那個 val % 2 代表奇數 因為 %2 不是 0 就是 1
後面乘的那個 val % 2 代表偶數 因為遇到就直接歸零重算
這解法有點像是賭徒/種族繁衍曲線
遇到少數黑天鵝事件就是財產歸零/種族滅絕
蠻有趣的