thảo luận Leetcode contest, đường tới Guardian

1714231759463.png

q2
4gmOAMB.png
let me in
 
Bài 3 ko hiểu sao làm sai nhỉ, thấy logic đúng mà ta =(( Gang thật


Python:
class Solution:
    def numberOfStableArrays(self, zero: int, one: int, limit: int) -> int:
        MOD = 10**9 + 7
        @lru_cache(None)
        def dp(zeroCount, oneCount, zeroRemaining, oneRemaining):
            if zeroRemaining == 0 and oneRemaining == 0:
                return 1
       
            if zeroRemaining < 0 or oneRemaining < 0:
                return 0
       
            ans = 0
            if zeroCount + oneCount > limit and zeroCount > 0 and oneCount > 0:
                ans = dp(0, 0, zeroRemaining, oneRemaining)
               
            else:
                ans = dp(zeroCount + 1, oneCount, zeroRemaining - 1, oneRemaining) + dp(zeroCount, oneCount + 1, zeroRemaining, oneRemaining - 1)
           
            return ans % MOD

        return dp(0, 0, zero, one)
 
Nay lựa chiến thuật sai lầm vcl =(( em ngồi tìm thuật toán O(n^2) cho q4 luôn, bỏ q3.
Mất hơn tiếng ngồi sửa và xịt =((
Thôi hẹn ngày mai vậy :cautious:
 
Đm nó làm câu 1 submit sai 1 lần ạ :ah: thiếu mẹ cái if tốn thời gian quá
Làm câu 2 8 phút câu 1 mất tận 15 phút, qua đi nhậu về sáng đầu óc ngơ ngơ quá =((
 
Nay em cũng chỉ được có 2 câu.
Lúc đầu làm câu 1, em nhảy qua câu 3 liền. Xong hơn 1h không giải được mwois qua câu 2.

Câu 3 em đếm tổ hợp. Tuy nhiên bị bí đoạn xử lí giao nhau.
Ví dụ zero = 4, one = 3, limit 2

Thì answer là 7C4 - (Số subarray có 3 số 0 liền kề) - (số subarray có 4 số 0 liền kề) - (số sub array có 3 số 1 liền kề).

Nhưng bị bí ở chỗ là (số subarray có 4 số 0 liền kề) có chứa phần đếm của (Số subarray có 3 số 0 liền kề)

1714233703562.png
 
Đm nó làm câu 1 submit sai 1 lần ạ :ah: thiếu mẹ cái if tốn thời gian quá
nay e làm chay ko xài ide, câu 1 thì bỏ biến đếm nhầm chỗ, chạy tay hơn chục lần đúng r mà sao báo wrong hoài.
câu 2 thì biến đếm int ngồi hơn 1 tiếng ko biết vì sao sai
HR4W6DU.png
 
ý tưởng dp cho q3 với q4 nó là xét f[j][0] và f[j][1]
ý nghĩa là số lượng dãy độ dài i, có j số bằng 0 (hoặc 1) và kết thúc bằng 0 và 1
:cautious: em cũng làm giống các bố top đầu nhưng cài hàm dp bị sai sml
Hợp lý nhể, dp['i'][j][0/1] là số dãy độ dài i, có j phần tử bằng 0 và kết thúc bằng 0/1. (i-j) = số lương phần tử 1 trong mảng rồi.
Sao em lại đâm đầu giải bài này theo math :(

Đúng hơn là cái hint là tuần này câu khó phải giải bằng dp, vì daily tuần này là dp
 
Hợp lý nhể, dp['i'][j][0/1] là số dãy độ dài i, có j phần tử bằng 0 và kết thúc bằng 0/1. (i-j) = số lương phần tử 1 trong mảng rồi.
Sao em lại đâm đầu giải bài này theo math :(

Đúng hơn là cái hint là tuần này câu khó phải giải bằng dp, vì daily tuần này là dp
hic em mới chơi voz không quen cú pháp
nên nãy gõ chỗ đấy bị sai xong xoá :(
 
Câu 4 có tầm 500 người làm được, trong đó không có tôi :D
Câu 3 thì t làm theo ý tưởng thế này:
nums[0] = x
nums[k]: giữ nguyên các bit 1 của x, thay các bit 0 của x thành biểu diễn nhị phân của k

Ví dụ mà Leetcode cho:
Input: n = 3, x = 4
Output: 6
Explanation: nums can be [4,5,6] and its last element is 6.

x biểu diễn theo bit là 0100
0 = 0b000 => nums[0] biểu diễn theo bit: 0100
1 = 0b001 => nums[1] biểu diễn theo bit: 0101
2 = 0b010 => nums[2] biểu diễn theo bit: 0110
 
Back
Top