楼主:
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 代表偶数 因为遇到就直接归零重算
这解法有点像是赌徒/种族繁衍曲线
遇到少数黑天鹅事件就是财产归零/种族灭绝
蛮有趣的