給定乙個陣列,最多能劃分多少個子陣列滿足給定的要求,如滿足和為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 也會...