🔗 🟢 1550. Three Consecutive Odds 1222

tags: Weekly Contest 202 陣列(Array)

題意

給定一個整數陣列 arrarr,如果陣列中有 33 個連續的奇數,則返回 truetrue;否則返回 falsefalse

思路:維護連續奇數的個數

cntcnt 為連續奇數的個數,初始為 00。遍歷整個陣列,對於每個元素,如果是奇數,則將連續奇數的個數 cntcnt11;否則將 cntcnt 設為 00。若在遍歷過程中 cntcnt 等於 33,則返回 truetrue;否則返回 falsefalse

複雜度分析

  • 時間複雜度:O(n)O(n),遍歷整個陣列一次。
  • 空間複雜度:O(1)O(1)
1
2
3
4
5
6
7
8
9
10
11
class Solution:
def threeConsecutiveOdds(self, arr: List[int]) -> bool:
cnt = 0
for x in arr:
if x & 1:
cnt += 1
if cnt == 3:
return True
else:
cnt = 0
return False
1
2
3
4
5
6
7
8
9
10
11
class Solution {
public:
bool threeConsecutiveOdds(vector<int>& arr) {
int cnt = 0;
for (int x : arr) {
cnt = x & 1 ? cnt + 1 : 0;
if (cnt == 3) return true;
}
return false;
}
};

寫在最後

Cover photo is remixed from @吃肥皂泡泡, thanks for their work!