Re: [閒聊] 每日leetcode
2411. Smallest Subarrays With Maximum Bitwise OR
思路 :
一開始就硬幹
從前面開始sliding window
後來想一下不對
根據題目, 從後面來應該比較快
就用一個arr紀錄每一個bit各自出現的最小index
然後再去找所有bit出現的最大index, 就知道要到哪個位置才能湊齊max bitwise or了
golang code :
func smallestSubarrays(nums []int) []int {
n := len(nums)
pos := make([]int, 32)
ans, end := make([]int, n), 0
for i := 0; i < 32; i++ {
pos[i] = -1
}
for i := n - 1; i > -1; i-- {
end = i
for j := 0; j < 32; j++ {
if nums[i]&(1<<j) == 0 {
if pos[j] != -1 {
end = max(end, pos[j])
}
} else {
pos[j] = i
}
}
ans[i] = end - i + 1
}
return ans
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.121.235.241 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1753802445.A.959.html
討論串 (同標題文章)
完整討論串 (本文為第 1480 之 1548 篇):