thảo luận Leetcode mỗi ngày

  • Người tạo chủ đề Người tạo chủ đề _Gia_Cat_Luong_
  • Ngày bắt đầu Ngày bắt đầu
Trạng thái
Không mở để trả lời thêm.
Sửa lần cuối:
Thím recommend cho mình vài cuốn cho newbie với ạ

Mình nghĩ các sách Algo cho các khoá học ở ĐH là ok rồi. Trước đây cấp 3 mình cày mấy quyển Toán Rời Rạc của thầy Nghĩa và Cẩm Nang Thuật Toán (Algorithms) của Robert Sedgewick.

Nếu thím có thể đọc tiếng Anh thì có thể đọc quyển Introduction to Algorithms (MIT) hoặc quyển Algorithms (Princeton) mình nói ở trên. Thím cũng có thể follow theo bài giảng từng tuần của các course thì sẽ nhẹ hơn. Princeton MIT
Tiếng Việt thì chắc là Cấu Trúc Dữ Liệu Và Giải Thuật của thầy Đỗ Xuân Lôi + Toán Rời Rạc của thầy Nghĩa. 2 sách này mình học thời học ở Bách Khoa. Các quyển này thì nhẹ hơn mấy quyển tiếng Anh trên.

Còn không muốn đọc sách thì vào trang thím trên share cũng được, mình thì vừa thích đọc sách vừa thích làm các bộ bài (như trong web trên thì là Grind75 + Blind75). :big_smile:
 
Sửa lần cuối:
JavaScript:
function updateMatrix(mat: number[][]): number[][] {
    const colLen = mat.length;
    const rowLen = mat[0].length;
    const ans: number[][] = [];
    const maxDistance = colLen + rowLen;

    // INIT ANS
    for (let i = 0; i < colLen; i++) {
        const initCol: number[] = [];
        for (let j = 0; j < rowLen; j++) {
            const initCell = mat[i][j] && maxDistance;
            initCol.push(initCell);
        }
        ans.push(initCol);
    }

    for (let i = 0; i < colLen; i++) {
        for (let j = 0; j < rowLen; j++) {
            if (ans[i][j] !== 0) {
                const cellLeft = i > 0 ? ans[i - 1][j] : maxDistance;
                const cellTop = j > 0 ? ans[i][j - 1] : maxDistance;
                ans[i][j] = Math.min(cellLeft, cellTop) + 1;
            }
        }
    }

    for (let i = colLen - 1; i >= 0; i--) {
        for (let j = rowLen - 1; j >= 0; j--) {
            if (ans[i][j] !== 0) {
                const cellRight = i < colLen - 1 ? ans[i + 1][j] : maxDistance;
                const cellDown = j < rowLen - 1 ? ans[i][j + 1] : maxDistance;
                ans[i][j] = Math.min(cellDown + 1, cellRight + 1, ans[i][j]);
            }
        }
    }

    return ans;
}
 
C++:
class Solution {
public:
    int dx[4] = {1,-1,0,0};
    int dy[4] = {0,0,1,-1};
    vector<vector<int>> updateMatrix(vector<vector<int>>& mat) {
        int n = mat.size(), m = mat[0].size();
        vector<vector<int>> res(n,vector<int>(m,INT_MAX));
        queue<pair<int,int>> q;
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++) {
                if (mat[i][j] == 0){
                    q.push({i,j});
                    res[i][j] = 0;
                }
        }
        while (!q.empty()){
            auto p = q.front(); q.pop();
            for (int i = 0; i < 4; i++){
                int x = p.first + dx[i], y = p.second + dy[i];
                if (x < 0 || x >= n || y < 0 || y >= m) continue;
                if (res[x][y] > res[p.first][p.second] + 1){
                    res[x][y] = res[p.first][p.second] + 1;
                    q.push({x,y});
                }
            }
        }
        return res;
    }
};
 
JavaScript:
function* neighborsOf([i, j]) {
    yield [i, j + 1];
    yield [i, j - 1];
    yield [i + 1, j];
    yield [i - 1, j];
}
    
/**
 * @param {number[][]} mat
 * @return {number[][]}
 */
var updateMatrix = function(mat) {
    const q = new Queue();
    const m = mat.length;
    const n = mat[0].length;
    const ans = Array(m).fill().map(() => Array(n).fill(null));

    for (let i = 0; i < m; i++) {
        for (let j = 0; j < n; j++) {
            if (mat[i][j] === 0) {
                ans[i][j] = 0;
                q.enqueue([i, j, 0]);
            }
        }
    }

    while (!q.isEmpty()) {
        const [i, j, k] = q.dequeue();
        for (const [ii, jj] of neighborsOf([i, j])) {
            if (ii >= 0 && ii < m && jj >= 0 && jj < n && ans[ii][jj] === null) {
                ans[ii][jj] = k + 1;
                q.enqueue([ii, jj, k + 1]);
            }
        }
    }

    return ans;
};
 
Thím freedom9 có mua neetcode premium ko.bản pre có gì ưu việt hơn bản thường nhỉ?
Mình cũng newbie đang luyệt lc.
Đợt đấy mình định mua ủng hộ tác giả mà sau cũng ko mua nữa vì hết tiền :sweat: giờ code lên 250 bài rồi thì mình ko cần thiết nữa nhưng chắc mình cũng mua, đợt này đang nghèo quá. Mình đọc thì ko thấy lợi ích gì nhiều đâu mua ủng hộ là chính

via theNEXTvoz for iPhone
 
Với những bài dễ như này thì thím nên tập code tối ưu luôn về mem, ví dụ như cái distance là có thể bỏ được này.
Ngoài ra modify input không phải lúc nào cũng là hay, dĩ nhiên cái này mình sẽ hỏi interviewer trước khi code còn code tự do thì như nào cũng được. :byebye:
Thank fence để mai rút kinh nghiệm, tuần này đăng kí weekly contest xem có gì. Mấy nay giải bài ngon nên thấy hơi tự tin :shame:
Mà còn phần bottom up Dp với Greedy hơi lởm, chắc cuối tuần lại luyện thêm :beauty:

via theNEXTvoz for iPhone
 
Thank fence để mai rút kinh nghiệm, tuần này đăng kí weekly contest xem có gì. Mấy nay giải bài ngon nên thấy hơi tự tin :shame:
Mà còn phần bottom up Dp với Greedy hơi lởm, chắc cuối tuần lại luyện thêm :beauty:

via theNEXTvoz for iPhone
Cần gì đợi cuối tuần, làm contest tuần trước cũng được. Nó có đếm tg như thường mà :))

via theNEXTvoz for iPhone
 
sao mấy bác giỏi thế
u3720e4.png

mình làm cái bài gì mà tính số cách leo thang (easy) mà cả buổi chưa ra
u3720e4.png

hôm qua thì mất cả ngày mới giải dc bài tìm căn bậc 2 của 1 số X (cũng level easy nốt)
u3720e4.png
 
sao mấy bác giỏi thế
u3720e4.png

mình làm cái bài gì mà tính số cách leo thang (easy) mà cả buổi chưa ra
u3720e4.png

hôm qua thì mất cả ngày mới giải dc bài tìm căn bậc 2 của 1 số X (cũng level easy nốt)
u3720e4.png
Bài leo thang tư duy như fibonacci mà nhỉ, còn bài căn bậc 2 đó linear search vẫn đc mà nhỉ? Mấy bài ez/med q1 q2 (q3) contest thường code nhìu quen tay th
 
Sửa lần cuối:
sao mấy bác giỏi thế
u3720e4.png

mình làm cái bài gì mà tính số cách leo thang (easy) mà cả buổi chưa ra
u3720e4.png

hôm qua thì mất cả ngày mới giải dc bài tìm căn bậc 2 của 1 số X (cũng level easy nốt)
u3720e4.png
bác đang chưa có cơ bản. Nên học cơ bản trước đã. Tự dưng lao vào làm thì làm sao đc
JGdqgzY.png
 
bác đang chưa có cơ bản. Nên học cơ bản trước đã. Tự dưng lao vào làm thì làm sao đc
JGdqgzY.png
do tính mình hơi cầu toàn tí, nên nhiều khi bài đó đã giải được rồi, nhưng nhìn cái runtime với memory đỏ lè ức chế quá phải ngồi mò cho ra.
Mình ko mạnh về thuật toán lắm vì 3-4 năm trở lại đây chủ yếu tập trung vào devops với business logic, toàn là làm theo bản năng bằng những cách cơ bản nên là mất nhiều thời gian để vừa mò phương pháp và vừa hiểu nữa.
Mà nói chung là mình yếu thiệt
6f4YXpQ.gif
 
do tính mình hơi cầu toàn tí, nên nhiều khi bài đó đã giải được rồi, nhưng nhìn cái runtime với memory đỏ lè ức chế quá phải ngồi mò cho ra.
Mình ko mạnh về thuật toán lắm vì 3-4 năm trở lại đây chủ yếu tập trung vào devops với business logic, toàn là làm theo bản năng bằng những cách cơ bản nên là mất nhiều thời gian để vừa mò phương pháp và vừa hiểu nữa.
Mà nói chung là mình yếu thiệt
6f4YXpQ.gif
Cái này phải học cơ bản, học theo từng topic. Leo bậc thang thì xài dynamic programming mà mới làm đã nhảy vào DP rồi thì chả thế :beat_brick:
Cứ phải học theo topic trước cái đã, nắm vững data structure rồi thì mới chơi được. 2 tháng trước mình cũng y như fence
 
do tính mình hơi cầu toàn tí, nên nhiều khi bài đó đã giải được rồi, nhưng nhìn cái runtime với memory đỏ lè ức chế quá phải ngồi mò cho ra.
Mình ko mạnh về thuật toán lắm vì 3-4 năm trở lại đây chủ yếu tập trung vào devops với business logic, toàn là làm theo bản năng bằng những cách cơ bản nên là mất nhiều thời gian để vừa mò phương pháp và vừa hiểu nữa.
Mà nói chung là mình yếu thiệt
6f4YXpQ.gif
Bác nên phân tích time & space complexity thôi. Đừng so đo run time + mem used làm gì, lc có chuẩn đâu :D
 
Mấy nay làm leetcode đam mê quá việc trên cty toàn bỏ bê cho team làm. Sắp tới có 2 projects quan trọng chắc hết được cày rồi. Vẫn cố gắng để ngày submit tầm 3 - 5 bài =((
 
Cái này phải học cơ bản, học theo từng topic. Leo bậc thang thì xài dynamic programming mà mới làm đã nhảy vào DP rồi thì chả thế :beat_brick:
Cứ phải học theo topic trước cái đã, nắm vững data structure rồi thì mới chơi được. 2 tháng trước mình cũng y như fence
ok bác. Mình cũng mới biết thằng leetcode dạo gần đây, vào làm chơi chơi nên mới pick đại mấy bài easy, ai ngờ là phải đi từng bước từng bước
 
Mấy nay làm leetcode đam mê quá việc trên cty toàn bỏ bê cho team làm. Sắp tới có 2 projects quan trọng chắc hết được cày rồi. Vẫn cố gắng để ngày submit tầm 3 - 5 bài =((
Thím thế là chăm đấy, e mỗi ngày chỉ 1 bài daily, hứng thì làm thêm 1-2 bài nữa. Được cái duy trì hàng ngày
qZV215Z.png
 
ok bác. Mình cũng mới biết thằng leetcode dạo gần đây, vào làm chơi chơi nên mới pick đại mấy bài easy, ai ngờ là phải đi từng bước từng bước
https://neetcode.io/
Vô đây mà học nè fence. Giải theo roadmap từ trên xuống dưới. Thấy valuable thì mua premium để ủng hộ tác giả. Nó nghỉ google chỉ để giải leetcode up video cho ae haha
 
Thím thế là chăm đấy, e mỗi ngày chỉ 1 bài daily, hứng thì làm thêm 1-2 bài nữa. Được cái duy trì hàng ngày
qZV215Z.png
Ở bên này chán vl, ko làm với ôm máy tính thì ko biết làm gì. Mà đói quá thì cũng phải ôm mộng đi pv big tech kiếm cơm thôi mai fence. Sau có con cái rồi thì cũng ko học được =(( Đang chờ tới đợt H1B năm sau để xin ref pv thử =((
 
Trạng thái
Không mở để trả lời thêm.

Thống kê chủ đề

Ngày tạo
_Gia_Cat_Luong_,
Người trả lời cuối
Vipluckystar,
Trả lời
17.755
Lượt xem
1.212.585
Quay lại
Lên đầu trang