精華區beta Marginalman 關於我們 聯絡資訊
1550. 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 代表偶數 因為遇到就直接歸零重算 這解法有點像是賭徒/種族繁衍曲線 遇到少數黑天鵝事件就是財產歸零/種族滅絕 蠻有趣的 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.249.242 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1746950013.A.06C.html
leafff: 大師 05/11 15:58