Leetcode 運運算元陣列問題

2021-10-25 09:48:24 字數 981 閱讀 8402

給定乙個陣列,最多能劃分多少個子陣列滿足給定的要求,如滿足和為0的子陣列,滿足乘積為1的子陣列

類似的子陣列問題,通常包含兩大類思路:

其二:動態規劃+map 新來的元素不斷參與計算,同時採取map儲存運算結果的下標

題目描述

給定乙個整型陣列arr,其中可能有正有負有零。你可以隨意把整個陣列切成若干個不相容的子陣列,求異或和為0的子陣列最多可能有多少個?整數異或和定義:把陣列中所有的數異或起來得到的值。

輸入

10

3 2 1 9 0 7 0 2 1 3

輸出

4

最優劃分:,,,,, 其中,,,的異或和為0

基本思路

採取unordered_map 儲存異或值的下標,確保始終是最新的下標(使得盡可能靠後)

不斷將新來的值參與異或運算=》ans 同時研究map中是否存在ans

若不存在:max[i]=max[i-1]

若存在:max[i]=max(max[i-1],1+max[map[ans]])

**實現

#include

#include

#include

using

namespace std;

intmain()

mp[ans]

=i;//當前異或值下標 放入map

} cout<

<

}

OrElse 運運算元和AndAlso 運運算元

在 vb.net 中,一般的判斷式都會使用到 or 及 and 運運算元,可是比較少人知道它們還有二個相對應的 orelse 及 andalso 運運算元。一般而言,筆者會建議所有的判斷式都使用 orelse 來取代 or 運運算元,使用 andalso 來取代 and 運運算元。為什麼呢?因為 o...

LeetCode 陣列 跳躍問題

給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。示例 2 輸入 3,2,1,0,4 輸出 fal...

LeetCode 陣列排序問題

給定乙個非負整數陣列 a,a 中一半整數是奇數,一半整數是偶數。對陣列進行排序,以便當 a i 為奇數時,i 也是奇數 當 a i 為偶數時,i 也是偶數。你可以返回任何滿足上述條件的陣列作為答案 輸入 4,2,5,7 輸出 4,5,2,7 解釋 4,7,2,5 2,5,4,7 2,7,4,5 也會...