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

  • Người tạo chủ đề Người tạo chủ đề freedom.9
  • Ngày bắt đầu Ngày bắt đầu
Trạng thái
Không mở để trả lời thêm.
Sao lại 2^K đc nhỉ, 2^K thì k = 16 là chết à, cũng như bfs thông thường thôi mà chỉ là O(n) thôi chứ


via theNEXTvoz for iPhone
BFS O(n) thì n là số đỉnh trong đồ thị. Trong thuật toán của bạn thì những giá trị total (2,...,k-1) sẽ được thăm nhiều lần.
Edit: Mình không lập trình trên python. Có đoạn code "if (total, lastNum) in visited" thì mình hiểu là nếu một cặp (total, lastNum) đã gặp rồi thì bỏ qua, nhưng (total, lastNum nào đó) thì sẽ được xét các lân cận.
 
BFS O(n) thì n là số đỉnh trong đồ thị. Trong thuật toán của bạn thì những giá trị total (2,...,k-1) sẽ được thăm nhiều lần.
Edit: Mình không lập trình trên python. Có đoạn code "if (total, lastNum) in visited" thì mình hiểu là nếu một cặp (total, lastNum) đã gặp rồi thì bỏ qua, nhưng (total, lastNum nào đó) thì sẽ được xét các lân cận.
Ừ cũng đúng nhỉ, để mình tính toán lại xem sao. Thanks fence. Do mình nghĩ tối đa thì mình chỉ có K đỉnh trong đồ thị thôi, nhưng mà ko phải rồi vì cache kiểu này nó sẽ là O(k*lastNum) nên worst case sẽ là O(n^2) chứ ko phải O(n)
 
Sửa lần cuối:
Ừ cũng đúng nhỉ, để mình tính toán lại xem sao. Thanks fence. Do mình nghĩ tối đa thì mình chỉ có K đỉnh trong đồ thị thôi, nhưng mà ko phải rồi vì cache kiểu này nó sẽ là O(k*lastNum) nên worst case sẽ là O(n^2) chứ ko phải O(n)
Mình tính sai cái time complexity rồi. Phải là O(n^2) như bạn tính mới đúng.
 
mấy thím luyện bài theo rating hay tag bài nhỉ :beat_brick: , e luyện tag bài 1 tg nma gặp vẫn ngáo vl :burn_joss_stick:
 
À mấy fence cho mình hỏi thử sao bài 2 giải bằng DFS thì nó throws TLE nhỉ
Time complexity với space complexity chỉ là O(n) thôi mà, vì worst case ở mỗi trường hợp nó tăng lên từ 1 -> 10^5 thôi chứ nhỉ
Python:
from collections import deque

class Solution:
    def minOperations(self, k: int) -> int:
        visited = set()
        queue = deque()
        queue.append((0, 1, 1))
      
        while queue:
            operations, total, lastNum = queue.popleft()
          
            if total >= k:
                return operations
          
            if (total, lastNum) in visited:
                continue
          
            visited.add((total, lastNum))
          
            queue.append((operations + 1, total + lastNum, lastNum))
            queue.append((operations + 1, total + 1, lastNum + 1))
          
        return -1
Em chạy thử thấy k = 3819 là đã TLE rồi, chắc test case bài này khá chặt, phải giải dưới O(n^2) thì mới qua
 
1711557582453.png

Cày sml ăn quả rank 13k4 mất toi 30 điểm huhu.
Đúng bài contest Q4 dễ nữa chứ =((
 
Lần này làm Q1 Q2 mất gần 35 phút, còn Q3 Q4 chịu
Từ nay không dám làm leetcode biweekly nữa, buổi tối mạng lag mất thời gian Q1 quá
 
c3 dùng sliding window bằng cách đếm lần bit i đuợc set, int nên array có 31 phần tử
 
Trạng thái
Không mở để trả lời thêm.

Thống kê chủ đề

Ngày tạo
freedom.9,
Người trả lời cuối
freedom.9,
Trả lời
2.480
Lượt xem
130.432
Quay lại
Lên đầu trang