aNotHeRNo0b
Senior Member
đề nó khó hiểu quá bác ạơ đọc đề ko kĩ à, cứ tưởng là phải split thành các sub strings
đề nó khó hiểu quá bác ạơ đọc đề ko kĩ à, cứ tưởng là phải split thành các sub strings
Đề đúng như cứt, đọc kĩ lại mãi mới hiểu, nếu chia 2 hoặc ko chia thì còn ko khó bằng bài 3 nữađề nó khó hiểu quá bác ạ

Q2 thì cái product chỉ cần dùng 1 cái boundary là 10^14 thôi, fen ăn nhiều bug thế hahaXem tệp đính kèm 3505615
lâu không làm xuống quá, dạo này em không đấm daily nữa xuống hẳn. Đi làm thì vibecode, đúng là đao không mài thì chỉ có cùn đi chứ không sắc nổi

Q3 thì có vài trường hợpBài 4 build prefix sum rồi gọi recursion chia left, right thôi các anh.
Cơ mà bài 3 làm sao vậy các anh. Đề dễ hiểu mà nghĩ mãi không ra
![]()

Chăm chỉ quá đại kaNay code bug nhiều vl, bài cuối code hơn 11s may vẫn pass![]()

class Solution:
def countGoodSubarrays(self, nums: list[int]) -> int:
n = len(nums)
def find(target):
bitSet = [[] for _ in range(32)]
dp = [0] * n
for right in range(n):
boundary = -1
for i in range(32):
if (target[right] >> i) & 1 == 0:
last = bisect_left(bitSet[i], right)
if last != 0:
boundary = max(boundary, bitSet[i][last - 1])
dp[right] = boundary
for i in range(32):
if (target[right] >> i) & 1:
bitSet[i].append(right)
return dp
left = find(nums)
rightRev = find(nums[::-1])
prevOccurrenceMap = defaultdict(lambda: -1)
leftOccurrenceBound = [-1] * n
for i in range(n):
val = nums[i]
leftOccurrenceBound[i] = prevOccurrenceMap[val]
prevOccurrenceMap[val] = i
ans = 0
for i in range(n):
L = max(left[i], leftOccurrenceBound[i])
revIdx = n - 1 - i
revBoundary = rightRev[revIdx]
R = n - 1 - revBoundary
ans += (i - L) * (R - i)
return ans©leetcode

cứ nghĩ nó TLE nhưng mà nó MLE
Mẹ cái case nums 0 bằng 0 quên mất ko là 4 câu 15ph ez rồiNay anh leet cho đề ez thế.![]()
kéo tới tận 42ph Tí về virtual phát, nay ko làm đượcmoá Q2 hôm nay là toán ạ
Q3 thì cứ nghĩ loop bình thường là ăn, sau phải có bin search vào mới AC![]()
Q3 có cần bi search siếc gì đâu fen nhỉ, rank 665.moá Q2 hôm nay là toán ạ
Q3 thì cứ nghĩ loop bình thường là ăn, sau phải có bin search vào mới AC![]()
class Solution:
def longestBalanced(self, s: str) -> int:
def find(s):
zeroCount = 0
oneCount = 0
n = len(s)
dp = [[0, 0]]*n
for i in range(n - 1, -1, -1):
dp[i] = [zeroCount, oneCount]
if s[i] == '0':
zeroCount += 1
else:
oneCount += 1
seen = {0: -1}
ans = 0
diff = 0
for i, char in enumerate(s):
if char == '1':
diff += 1
else:
diff -= 1
if diff + 2 in seen and dp[i][1] > 0:
ans = max(ans, i - seen[diff + 2])
if diff - 2 in seen and dp[i][0] > 0:
ans = max(ans, i - seen[diff - 2])
if diff not in seen:
seen[diff] = i
else:
ans = max(ans, i - seen[diff])
return ans
return max(find(s), find(s[::-1]))

Rank này bác trên 2k3 mới bị trừ điểm chứ mà dưới thì vô tư

Em cx 2250 rồi bácRank này bác trên 2k3 mới bị trừ điểm chứ mà dưới thì vô tư![]()
Mấy nay cheaters kinh quá nên ko dám lôi nick chính ra sợ feed quá![]()
