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.
Java:
class Solution {
    public int maxMoves(int[][] grid) {
        int height = grid.length;
        int width  = grid[0].length;

        int[][] dp = new int[height][width];
        for (int i = 0; i < height; i++) {
            Arrays.fill(dp[i], 1);
        }
        int[][] direction = new int[][]{
            {-1, 1},
            {0, 1},
            {1, 1}
        };
        int ROW = 0;
        int COL = 1;

        int longestDistance = 0;
        for (int c = width - 2; c >= 0; c--) {
            for (int r = 0; r < height; r++) {
                for (int[] dir : direction) {
                    if (isOutOfRange(r + dir[ROW], 0, height) || isOutOfRange(c + dir[COL], 0, width)) {
                        continue;
                    }

                    if (grid[r][c] < grid[r + dir[ROW]][c + dir[COL]]) {
                        dp[r][c] = Math.max(
                            dp[r][c],
                            dp[r + dir[ROW]][c + dir[COL]] + 1
                        );
                        if (c == 0) {
                            longestDistance = Math.max(
                                longestDistance,
                                dp[r][c] - 1
                            );
                        }
                    }
                }
            }
        }

        return longestDistance;
    }

    public boolean isOutOfRange(int cur, int min, int max) {
        return cur < min || cur >= max;
    }
}
DP lỏ, xuống được O(m) Space nhưng mà lười :beat_shot: :beat_shot:
 
Java:
class Solution {
    int[][] memoi, grid;
    int m, n;
    int[] dy = {-1, 0, 1};
    public int maxMoves(int[][] grid) {
        this.grid = grid;
        this.m = grid.length;
        this.n = grid[0].length;
        this.memoi = new int[m][n];

        int res = 1;
        for (int i = 0; i < m; i++) {
            res = Math.max(res, dp(i, 0));
        }

        return res - 1;
    }

    private int dp(int row, int col) {
        if (col == n - 1) {
            return 1;
        }

        if (memoi[row][col] != 0) {
            return memoi[row][col];
        }

        int res = 0;
        for (int i = 0; i < 3; i++) {
            int ny = row + dy[i], nx = col + 1;

            if (ny < 0 || ny == m || nx < 0 || nx == n ||
                grid[ny][nx] <= grid[row][col]) {
                continue;
            }

            res = Math.max(res, dp(ny, nx));

        }

        return memoi[row][col] = 1 + res;
    }
}
 
C-like:
impl Solution {
    pub fn max_moves(grid: Vec<Vec<i32>>) -> i32 {
        let (m, n) = (grid.len(), grid[0].len());
        let (mut memo, mut memo_prev) = (vec![0; m], vec![0; m]);

        let mut result = 0;
        for j in 0..(n - 1) {
            for i in 0..m {
                if j > 0 && memo_prev[i] == 0 {
                    continue;
                }

                if i > 0 && grid[i][j] < grid[i - 1][j + 1] {
                    memo[i - 1] = memo[i - 1].max(memo_prev[i] + 1);
                    result = result.max(memo[i - 1]);
                }

                if grid[i][j] < grid[i][j + 1] {
                    memo[i] = memo_prev[i].max(memo_prev[i] + 1);
                    result = result.max(memo[i]);
                }

                if i < m - 1 && grid[i][j] < grid[i + 1][j + 1] {
                    memo[i + 1] = memo[i + 1].max(memo_prev[i] + 1);
                    result = result.max(memo[i + 1]);
                }
            }

            (memo, memo_prev) = (memo_prev, memo);
            memo.iter_mut().for_each(|cell| *cell = 0);
        }

        result
    }
}
 
@LmaoSuVuong còn ko mau làm 10 câu dp tự phạt?
osCpCsi.png
Xin phép check var 10 câu DP của @LmaoSuVuong từ giờ tới cuối tuần
osCpCsi.gif



via theNEXTvoz for iPhone
 
sắp halloween rồi, các boss @freedom.9, @Cố Trường Ca, @seastar có tổ chức event phát kẹo ko nhể
zFNuZTA.png
Dạo này lười làm leetcode rồi, đi PV cả chục chỗ mà tạch hết, chả đc offer nào nên oải quá. Chắc phải yêu lại từ đầu công ty hiện tại thôi, :beat_brick:

C++:
class Solution {
public:
    int maxMoves(vector<vector<int>>& grid) {
        vector<int> dp(grid.size(), 0);
        vector<int> next_dp(grid.size(), 0);
        int ret = 0;
        for (int j = 1; j < grid[0].size(); ++j) {
            for (int i = 0; i < grid.size(); ++i) {
                for (int x = max(0, i - 1); x <= min((int)grid.size() - 1, i + 1); ++x) {
                    if (grid[x][j-1] < grid[i][j]) next_dp[i] = max(next_dp[i], dp[x] + 1);
                }
                ret = max(ret, next_dp[i]);
            }
            if (ret < j) break;
            fill(dp.begin(), dp.end(), 0);
            dp.swap(next_dp);
        }
        return ret;
    }
};
 
Dạo này lười làm leetcode rồi, đi PV cả chục chỗ mà tạch hết, chả đc offer nào nên oải quá. Chắc phải yêu lại từ đầu công ty hiện tại thôi, :beat_brick:

C++:
class Solution {
public:
    int maxMoves(vector<vector<int>>& grid) {
        vector<int> dp(grid.size(), 0);
        vector<int> next_dp(grid.size(), 0);
        int ret = 0;
        for (int j = 1; j < grid[0].size(); ++j) {
            for (int i = 0; i < grid.size(); ++i) {
                for (int x = max(0, i - 1); x <= min((int)grid.size() - 1, i + 1); ++x) {
                    if (grid[x][j-1] < grid[i][j]) next_dp[i] = max(next_dp[i], dp[x] + 1);
                }
                ret = max(ret, next_dp[i]);
            }
            if (ret < j) break;
            fill(dp.begin(), dp.end(), 0);
            dp.swap(next_dp);
        }
        return ret;
    }
};
bác có biết vì sao tạch ko.
V092S5K.gif
review tí về vị trí bác ứng tuyển với review mấy vòng pvan đi
z8SmL8K.png
 
Dạo này lười làm leetcode rồi, đi PV cả chục chỗ mà tạch hết, chả đc offer nào nên oải quá. Chắc phải yêu lại từ đầu công ty hiện tại thôi, :beat_brick:

C++:
class Solution {
public:
    int maxMoves(vector<vector<int>>& grid) {
        vector<int> dp(grid.size(), 0);
        vector<int> next_dp(grid.size(), 0);
        int ret = 0;
        for (int j = 1; j < grid[0].size(); ++j) {
            for (int i = 0; i < grid.size(); ++i) {
                for (int x = max(0, i - 1); x <= min((int)grid.size() - 1, i + 1); ++x) {
                    if (grid[x][j-1] < grid[i][j]) next_dp[i] = max(next_dp[i], dp[x] + 1);
                }
                ret = max(ret, next_dp[i]);
            }
            if (ret < j) break;
            fill(dp.begin(), dp.end(), 0);
            dp.swap(next_dp);
        }
        return ret;
    }
};
Sao tạch thế fence :ah:
Dạo này cty mình nó cắt giảm cũng nhiều nên còn nhiều việc, mấy thằng mõm nghỉ bớt rồi nên cũng đỡ chán :ah:
Cảm giác ko được đi phỏng vấn rất bứt rứt trong người =((
 
bác có biết vì sao tạch ko.
V092S5K.gif
review tí về vị trí bác ứng tuyển với review mấy vòng pvan đi
z8SmL8K.png
Nhiều lý do lắm. Mỗi lần lại 1 lý do khác nhau. Có lần thì đó quá chủ quan. Hẹn PV buổi tối. Cả ngày làm task thấy căng não quá. Ăn cơm tối đóng mịa vài lon bia. Vào PV trả lời ngáo đét. :beat_brick: .
Lần khác thì xui đó HR nó bị miss email chọn lịch PV. Từ lúc làm xong OA đến round đầu chờ hơn 1 tháng, lúc PV cảm giác như hỏi để đánh rớt vậy, chắc tìm được người rồi.
Còn vài lần khác thì tạch ngay vòng gửi xe nói chuyện với HR hoặc khá hơn thì có vài lần đến round cuối nhưng cũng k có offer. Họ chỉ đơn giản feedback là chưa đạt yêu cầu. Khả năng do đòi cao quá. :ah:
 
Nhiều lý do lắm. Mỗi lần lại 1 lý do khác nhau. Có lần thì đó quá chủ quan. Hẹn PV buổi tối. Cả ngày làm task thấy căng não quá. Ăn cơm tối đóng mịa vài lon bia. Vào PV trả lời ngáo đét. :beat_brick: .
Lần khác thì xui đó HR nó bị miss email chọn lịch PV. Từ lúc làm xong OA đến round đầu chờ hơn 1 tháng, lúc PV cảm giác như hỏi để đánh rớt vậy, chắc tìm được người rồi.
Còn vài lần khác thì tạch ngay vòng gửi xe nói chuyện với HR hoặc khá hơn thì có vài lần đến round cuối nhưng cũng k có offer. Họ chỉ đơn giản feedback là chưa đạt yêu cầu. Khả năng do đòi cao quá. :ah:
Đi phỏng vấn nên book buổi sáng fen à, đầu óc tỉnh táo.
Trước khi vô PV warm up bằng 5 7 câu easy cho não nó hoạt động là ngon lành. Nhiều lúc vừa vào nhào vô luôn contests não ngáo đét =((
Con mẹ gần đây HR Amazon, HR cty local nó cũng ping rầm rầm mà toàn phải từ chối cay thật =(( rất bứt rứt trong người.
 
Sửa lần cuối:
Nhiều lý do lắm. Mỗi lần lại 1 lý do khác nhau. Có lần thì đó quá chủ quan. Hẹn PV buổi tối. Cả ngày làm task thấy căng não quá. Ăn cơm tối đóng mịa vài lon bia. Vào PV trả lời ngáo đét. :beat_brick: .
Lần khác thì xui đó HR nó bị miss email chọn lịch PV. Từ lúc làm xong OA đến round đầu chờ hơn 1 tháng, lúc PV cảm giác như hỏi để đánh rớt vậy, chắc tìm được người rồi.
Còn vài lần khác thì tạch ngay vòng gửi xe nói chuyện với HR hoặc khá hơn thì có vài lần đến round cuối nhưng cũng k có offer. Họ chỉ đơn giản feedback là chưa đạt yêu cầu. Khả năng do đòi cao quá. :ah:
Đợt pv có lần em bảo cty cũ lương thấp nên nghỉ qua cty hiện tại. Cái bị hỏi cty hiện tại lương ổn hem, e kêu ổn. Tạch luôn :v Honest k đúng nơi :D
 
Đi phỏng vấn nên book buổi sáng fen à, đầu óc tỉnh táo.
Trước khi vô PV warm up bằng 5 7 câu easy cho não nó hoạt động là ngon lành. Nhiều lúc vừa vào nhào vô luôn contests não ngáo đét =((
Interviewer nó múi giờ EU, chiều hoặc tối. Chiều hay meeting nên chọn tối luôn đó. Thôi sai thì sửa, chửa thì đẻ. Biết đâu nhờ tạch CTY mốt lại kiếm đc kèo thơm hơn, :p
Mà tính ra cũng do làm leetcode nên k lần nào bị fail ở OA hay live code cả. :p
 
C#:
public class Solution
{
    int[][] dirs = [[-1, -1], [0, -1], [1, -1]];
    public int MaxMoves(int[][] grid)
    {
        int rows = grid.Length;
        int cols = grid[0].Length;

        int[,] dp = new int[rows, cols];
        for (int i = 0; i < rows; i++)
        {
            dp[i, 0] = 1;
        }

        int result = 1;
        for (int col = 1; col < cols; col++)
        {
            for (int row = 0; row < rows; row++)
            {
                int localMax = 0;
                int current = grid[row][col];
                foreach (var dir in dirs)
                {
                    int r = row + dir[0];
                    int c = col + dir[1];
                    if (r < 0 || rows <= r || c < 0 || cols <= c)
                    {
                        continue;
                    }
                    if (dp[r,c] == 0 || current <= grid[r][c])
                    {
                        dp[row,col] = 0;
                        continue;
                    }
                    localMax = Math.Max(localMax, dp[r,c] + 1);
                }
                dp[row,col] = localMax;
                result = Math.Max(result, localMax);
            }
        }

        return result - 1;
    }
}
 
Interviewer nó múi giờ EU, chiều hoặc tối. Chiều hay meeting nên chọn tối luôn đó. Thôi sai thì sửa, chửa thì đẻ. Biết đâu nhờ tạch CTY mốt lại kiếm đc kèo thơm hơn, :p
Mà tính ra cũng do làm leetcode nên k lần nào bị fail ở OA hay live code cả. :p
Fence target mấy cty bên EU với bên UK thử xem, tụi này cho Visa cũng dễ ko thì làm remote cũng ngon choét. Lâu lâu rình mò bên mấy cty product rồi lên kiếm ae VN ref cho
 
Đợt pv có lần em bảo cty cũ lương thấp nên nghỉ qua cty hiện tại. Cái bị hỏi cty hiện tại lương ổn hem, e kêu ổn. Tạch luôn :v Honest k đúng nơi :D
Cũng chưa chắc, cứ đặt target của mình phù hợp với năng lực rồi đi pv, ko việc gì phải đi lấy lòng cty cả. Với tâm thế ko có job này cũng có job khác, tạch thì review lại xem mình còn yếu phần nào rồi cải thiện thôi. Cứ trả lời honest là được rồi.
1 cuộc phỏng vấn chỉ khoảng 60ph nên phần nhiều những lần tạch ko phải do vấn đề technical đâu mà là do giao tiếp, thái độ là chính. Cứ trung thực, biết nói I don't know đúng lúc, ko vòng vo, chịu học, chịu hỏi, ko láo nhăm nhe đấm interviewer là phần lớn có nhiều cơ hội đi vào vòng trong rồi. Còn những cty nó ko chấp nhận yếu tố honesty thì cũng ko nên vô làm gì.
Mình cũng ít đi phỏng vấn nhưng từ hồi đi pv senior là hầu như lần pv nào cũng pass cả, có lần phỏng vấn system design trước xong phỏng vấn tạch live coding nhưng vẫn pass, đó là lí do tại sao mình quyết tâm học Leetcode nghiêm túc :beat_brick:
 
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.213.944
Quay lại
Lên đầu trang