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.
Bài 3 gang thế nhỉ, brute force 30 phút mới ra :ah:
Còn bài 4 xử lí sao đây ko có ý tưởng gì =((
 
Solution nhá, code hơi bựa nhưng nhanh ra
C++:
struct Trie {
    Trie *next[26];
    long long count;
    
    Trie() {
        count = 0;
        for (int i = 0; i < 26; ++i) {
            next[i] = NULL;
        }
    }
    
    long long Count(string &s) {
        auto current = this;
        for (auto c: s) {
            if (current->next[c - 'a'] == NULL) {
                return 0;
            }
            current = current->next[c - 'a'];
        }
        return current->count;
    }
};

class Solution {
    vector<int> z_function(string &s) {
        int n = s.size();
        vector<int> z(n);
        int l = 0, r = 0;
        for(int i = 1; i < n; i++) {
            if(i < r) {
                z[i] = min(r - i, z[i - l]);
            }
            while(i + z[i] < n && s[z[i]] == s[i + z[i]]) {
                z[i]++;
            }
            if(i + z[i] > r) {
                l = i;
                r = i + z[i];
            }
        }
        return z;
    }
    
    
public:
    long long countPrefixSuffixPairs(vector<string>& words) {
        Trie* t = new Trie();
        long long ans = 0;
        for (int i = words.size() - 1; i >= 0; --i) {   
            auto w = words[i];
            
            ans += t->Count(w);
            
            auto zf = z_function(w);
            int pos = 0;
            zf[0] = w.size();
            
            Trie* current = t;
            
            for (int j = w.size() - 1; j >= 0; j--) {
                int sz = w.size() - j;
                
                if (current->next[w[sz - 1] - 'a'] == NULL) {
                    current->next[w[sz - 1] - 'a'] = new Trie();
                }
                current = current->next[w[sz - 1] - 'a'];
                if (zf[j] == sz) {
                    current->count++;
                }
            }
        }
        
        return ans;
    }
};
 
Python:
class Solution:
    def mostFrequentPrime(self, mat: List[List[int]]) -> int:
        freq = defaultdict(int)
        ans = [-1,-1]
        m,n = len(mat),len(mat[0])
        dir = [(0,1),(1,0),(0,-1),(-1,0),(1,1),(-1,-1),(1,-1),(-1,1)]
       
        def isPrime(n):
            if (n <= 1):
                return False
            for i in range(2, int(sqrt(n))+1):
                if (n % i == 0):
                    return False
            return True

        frequency = {}
        maxFrequency = -1
       
        for i in range(m):
            for j in range(n):
                for dx,dy in dir:
                    digit = mat[i][j]
                    x,y = i + dx,j + dy
                    while 0<=x<m and 0<=y<n:
                        digit = digit*10 + mat[x][y]
                        if isPrime(digit):
                            frequency[digit] = frequency.get(digit, 0) + 1
                            maxFrequency = max(maxFrequency, frequency[digit])
                           
                        x+=dx
                        y+=dy
                       
                       
        if maxFrequency == -1:
            return -1

        ans = -1
        for key, value in frequency.items():
            if value == maxFrequency:
                ans = max(ans, key)

        return ans

Bài 3 dễ vl mà code lung tung quá hơi lâu, giải bài 2 đang trong top 2k mà giải xong bài 3 về 4k rồi =((
Tụi leetcode cho mấy bài hard gần đây toàn KMP với Z function, học mấy cái algorithm này phức tạp vl cũng ko nhớ nổi thà để thời gian làm tiếp medium cho nhanh
 
Sửa lần cuối:
Sắp rồi :sweet_kiss:


Screenshot_20240221-223725.png
 
Gạch thôi, lập clone đi lấy rating của anh em à :doubt:
Xem tệp đính kèm 2345099
1695, sắp thoát khỏi kiếp dalit chỉ nhận được monthly badge rồi :ah:
4 contests nữa rank 2k đổ lên là sure kèo knight :ah: gáng nào
Hình như Leetcode lập clone là bị ban đấy, thím report đi :D
Bỏ bê nhiều quá, tuần này mình sẽ quay lại làm.
 
Hình như Leetcode lập clone là bị ban đấy, thím report đi :D
Bỏ bê nhiều quá, tuần này mình sẽ quay lại làm.
Hèn gì mấy nay ko thấy fence đâu, quay lại luyện đi fence. Đang ngó nghiêng tìm Job bên Canada thử xem đây, nay mới nhận tin bạn direct manager làm việc bên phía KH của mình bị layoff do lương cao quá, thấy tương lai bấp bênh :ah:
 
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.414
Quay lại
Lên đầu trang