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

không cần template là tư duy giải bài của anh tốt đó, chứ chưa chi đã nghĩ ngay dùng template như em cũng không tốt lắm :adore:
Mình còn cùi lắm fence, nay ăn hên thôi nhưng mà cũng có tiến bộ vl rồi =(( mừng quá =((
 
View attachment 2362398
Hardwork must be paid off các fence ơi :ah: lần đầu giải được 4 bài mừng quá hahahaha
Bài cuối để print nó ghi output limit exceed đm leetcode sida :ah: làm bug 1 phát cmnr :ah:
T cũng vừa làm xong, lần đầu làm được 4 câu :D
1709437224025.png
 
Mấy bài matrix ko làm nhiều dễ loạn lắm.
Q2 mình xài dp đó fence
Bài đó em brute force bị LTE.
Sau đó phải tìm cách tính linh ta linh tinh, vẫn được accept ( em không biết gì về khái niệm DP hay các cái giải thuật, trước giờ toàn làm theo cảm tính :too_sad: )



var countSubmatrices = function(g, k) { const e = []; let c = 0 for (let i = 0; i < g.length; i++) { const row = Array(g[0].length).fill(0); e.push(row); } let s1 = 0 for(let i = 0; i < g.length; i++){ s1 += g[i][0] e[i][0] = s1 if(s1 <= k){ c++ } } let s2 = 0 for(let i = 0; i < g[0].length; i++){ s2 += g[0][i] e[0][i] = s2 if(s2 <= k && i !== 0){ c++ } } for(let i = 1; i < g.length; i++){ for(let j = 1; j < g[0].length; j++){ e[i][j] = e[i-1][j] + e[i][j-1] - e[i-1][j-1] + g[i][j] if(e[i][j] <= k){ c++ } } } return c; };
 
Bài 4 có mấy cái AVL tree, Segment tree, Fenvich fenwich gì gì đó hay vãi. Để thời gian ngâm cứu mấy cái nâng cao này mới được o_O
 
Bài đó em brute force bị LTE.
Sau đó phải tìm cách tính linh ta linh tinh, vẫn được accept ( em không biết gì về khái niệm DP hay các cái giải thuật, trước giờ toàn làm theo cảm tính :too_sad: )



var countSubmatrices = function(g, k) { const e = []; let c = 0 for (let i = 0; i < g.length; i++) { const row = Array(g[0].length).fill(0); e.push(row); } let s1 = 0 for(let i = 0; i < g.length; i++){ s1 += g[i][0] e[i][0] = s1 if(s1 <= k){ c++ } } let s2 = 0 for(let i = 0; i < g[0].length; i++){ s2 += g[0][i] e[0][i] = s2 if(s2 <= k && i !== 0){ c++ } } for(let i = 1; i < g.length; i++){ for(let j = 1; j < g[0].length; j++){ e[i][j] = e[i-1][j] + e[i][j-1] - e[i-1][j-1] + g[i][j] if(e[i][j] <= k){ c++ } } } return c; };
Bài 2 của mình đây, công thức là sum(i,j)= sum(i-1, j) + sum (i, j - 1) - sum (i - 1, j -1)
Cái này có thể apply cho bài toán tìm sum của 1 square bất kì trong matrix được luôn, đợt gần đây thấy meta với google hay cho bài toán tính sum của 1 square bất kì trong matrix
Python:
class Solution:
    def countSubmatrices(self, grid: List[List[int]], k: int) -> int:
        m = len(grid)
        n = len(grid[0])
        if grid[0][0] > k:
            return 0
       
        ans = 0
        dp = [[0 for _ in range(n)] for _ in range(m)]
        for i in range(m):
            for j in range(n):
                if i == 0 and j == 0:
                    ans += 1
                    dp[0][0] = grid[0][0]
                else:
                    x = y = 0
                    if j - 1 < 0:
                        x = 0
                    else:
                        x = dp[i][j - 1]
                       
                    if i - 1 < 0:
                        y = 0
                    else:
                        y = dp[i- 1][j]
                   
                    sum = x + y
                    if i - 1 >= 0 and j - 1 >= 0:
                        sum -= dp[i-1][j - 1]
                       
                    dp[i][j] = grid[i][j] + sum
                    if dp[i][j] <= k:
                        ans +=1

        return ans

Python:
class Solution:
    def countSubmatrices(self, grid: List[List[int]], k: int) -> int:
        m = len(grid)
        n = len(grid[0])
        if grid[0][0] > k:
            return 0
        
        ans = 0
        dp = [[0 for _ in range(n)] for _ in range(m)]
        for i in range(m):
            prefixSum = 0
            for j in range(n):
                prefixSum += grid[i][j]
                dp[i][j] = prefixSum
                if i - 1 >= 0:
                    dp[i][j] += dp[i - 1][j]
            
                if dp[i][j] <= k:
                    ans +=1
                
        return ans
 
Last edited:
Đm weak testcases q4 nữa rồi, hi vọng tụi nó rejudge đừng cancel.
Mấy thằng C++ giải On^2 vẫn pass :too_sad:

via theNEXTvoz for iPhone
Mình nghĩ là sẽ có rejudge. Cho testcase một dãy giảm 10^5 phần tử là những solution time complexity O(n^2) sẽ bị TLE thôi.
Nhưng mình nghĩ phải cho một dãy 2* 10^5 phần tử thì mới chắc ăn quét hết solution O(n^2).
 
Top8, cao thủ phương nào đây :oh:

via theNEXTvoz for iPhone

flashmt là tay to trong làm CP rồi bác, bạc HSG Tin quốc tế năm 2011 còn đi thi ACM ICPC WF năm 13 16 nữa mà :LOL: Vừa trâu vừa nhiều kinh nghiệm
 
Mình nghĩ là sẽ có rejudge. Cho testcase một dãy giảm 10^5 phần tử là những solution time complexity O(n^2) sẽ bị TLE thôi.
Nhưng mình nghĩ phải cho một dãy 2* 10^5 phần tử thì mới chắc ăn quét hết solution O(n^2).
Missing Test Case - 3072. Distribute Elements Into Two Arrays II · Issue #20947 · LeetCode-Feedback/LeetCode-Feedback (https://github.com/LeetCode-Feedback/LeetCode-Feedback/issues/20947#issuecomment-1976890913)
Có một leetcoder gửi testcase lên để quét solution Time Complexity: O(n^2) mà bị từ chối.
 
Dạo này thất nghiệp có vẻ đông vl haha. Contest tụi Leetcode khoảng 1 năm trước đây chỉ tầm 22k tham gia, nay đã lên 30k thằng tham gia rồi.
Ngày xưa q3 chỉ tầm 2 3k accepted thôi mà đợt gần đây toàn tăng lên 4 5k accepted.
 
Back
Top