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.
Nay chạy mấy bài medium ôn luyện code đỡ lỏ cuối tuần làm contest chứ xài clone thi ko có động lực gì, ae nhào vô ăn ít cơm thêm Medium


Mấy bài này hay phết đa dạng topic :ah:
câu này có cái case 1 mảng 100000 phần tử 32, e tính ra C(100000, 2) = 4999950000 (sẽ bị overflow kiểu int) mà sao leetcode nó tính ra được cái này nhỉ
1732089309695.png


edit: quên mất cái trò % 100000007 :beat_brick:
 
Sửa lần cuối:
C++:
class Solution {
public:
    int takeCharacters(string s, int k) {
        int n = s.size();
        int i = n-1, j = n;
        map<char,int> mp;
        for (auto c:s) {
            mp[c] += 1;
        }
        if (mp['a'] < k || mp['b'] < k || mp['c'] < k) {
            return -1;
        }
        int mn = n;
        while (i >= 0) {
            mp[s[i--]] -= 1;
            while (mp['a'] < k || mp['b'] < k || mp['c'] < k) {
                mp[s[--j]] += 1;
            }
            mn = min(i + 1 + n - j, mn);
        }
        return mn;
    }
};
 
Nay chạy mấy bài medium ôn luyện code đỡ lỏ cuối tuần làm contest chứ xài clone thi ko có động lực gì, ae nhào vô ăn ít cơm thêm Medium
Python:
class Solution:
    def minimizeXor(self, num1: int, num2: int) -> int:
        num1_32bit = list(format(num1, '032b'))
        total = num2.bit_count()
        res = ['0'] * 32

        for i, c in enumerate(num1_32bit):
            if c == '1' and total > 0:
                total -= 1
                res[i] = '1'
 

        for c, i in list(zip(res, range(32)))[::-1]:
            if total > 0 and c == '0':
                total -= 1
                res[i] = '1'
     
            if total == 0:
                break
     
 
        binary_string = ''.join(res)

        # Convert the binary string to a base-10 integer
        base_10_value = int(binary_string, 2)

        return base_10_value
biết tí bit shift vào code trông nguy hiểm hẳn
JkpvuKo.png

Java:
class Solution {
    public int minimizeXor(int num1, int num2) {
        int bit_cnt1 = Integer.bitCount(num1);
        int bit_cnt2= Integer.bitCount(num2);
        int len=1;
        while(num1>>len>0){
            len++;
        }
        int res =0;
        int i =len;
        int j =bit_cnt2;
        while(i>=0 && j >0){
            if((num1>>i &1) ==1){
                res |= (1<<i);
                j--;
            }
            i--;
        }
        i=0;
        while(j>0){
            if((num1>>i &1) ==0){
                res |= (1<<i);
                j--;
            }
            i++;
        }
        return res;
    }
}
Java:
class Solution {
    public int countPairs(int[] deliciousness) {
        final int MOD = 1000000007;
        Map<Integer,Integer> map = new HashMap<>();
        Set<Integer> powerOf2 = new HashSet();
        for(int i =0;i<=21;i++){
            powerOf2.add(1<<i);
        }
        int res =0;
        for(int num:deliciousness){
            for(int p :powerOf2 ){
                if(map.containsKey(p-num)){
                    res+=map.get(p-num);
                    res=res%MOD;
                }
            }
            map.put(num,map.getOrDefault(num,0)+1);
        }

        return res;
    }
}
at9JAlm.png
 
Sửa lần cuối:
câu này có cái case 1 mảng 100000 phần tử 32, e tính ra C(100000, 2) = 4999950000 (sẽ bị overflow kiểu int) mà sao leetcode nó tính ra được cái này nhỉ
Xem tệp đính kèm 2791867

edit: quên mất cái trò % 100000007 :beat_brick:
1732095902836.png

tui cũng bị
Python:
class Solution:
    def countPairs(self, arr: List[int]) -> int:
        arr.sort()
        hm = {1 << i for i in range(22)}
        d, res = defaultdict(int), 0
        for num in arr:
            for square in hm:
                if d[square - num] > 0 and 0 <= square - num:
                    res += d[square - num]
            d[num] += 1
        return res % 1000_000_007
 
Nay chạy mấy bài medium ôn luyện code đỡ lỏ cuối tuần làm contest chứ xài clone thi ko có động lực gì, ae nhào vô ăn ít cơm thêm Medium


Mấy bài này hay phết đa dạng topic :ah:
difficult rate thấp mà giải lâu quá, mò mãi mới ra :beat_brick:
Python:
class Solution:
    def prisonAfterNDays(self, arr: List[int], n: int) -> List[int]:
        n = n % 14 if n % 14 else 14

        prev = arr

        for _ in range(n):
            res = []
            for i in range(8):
                if i == 0 or i == 7:
                    res.append(0)
                elif prev[i-1] == prev[i+1] == 0 or prev[i-1] == prev[i+1] == 1:
                    res.append(1)
                else:
                    res.append(0)
            prev = res
        
        return prev
 
C++:
class Solution {
public:
    int takeCharacters(string const &s, int k) {
        if (k == 0) return 0;
        int n = s.size(), res = INT_MAX;
        int count[3] = {0, 0, 0};
        for (int l = 0, r = 0; r < 2 * n; ++r) {
            count[s[r % n] - 'a']++;
            while (l < n && count[s[l] - 'a'] > k)
                count[s[l++] - 'a']--;
            if (l >= n) break;
            if (count[0] >= k && count[1] >= k && count[2] >= k && r - l < n) {
                if (l > 0 && r < n - 1)
                    res = min({res, r + 1, n - l});
                else
                    res = min(res, r - l + 1);
            }  
        }
        return res == INT_MAX ? - 1 : res;
    }
};
 
DP thôi chứ ko thấy lỏ chỗ nào, cũng khó vl
Python:
class Solution:
    def getLengthOfOptimalCompression(self, s: str, k: int) -> int:
        n = len(s)

        @lru_cache(None)
        def findMin(index, lastChar, charCount, remainingK):
            if remainingK < 0:
                return inf
            if index == n:
                return 0

            ans = findMin(index + 1, lastChar, charCount, remainingK - 1)
            if s[index] == lastChar:
                increaseLength = int(charCount in [1, 9, 99])
                ans = min(ans, findMin(index + 1, lastChar, charCount + 1, remainingK) + increaseLength)
            else:
                ans = min(ans, findMin(index + 1, s[index], 1, remainingK) + 1)

            return ans

        return findMin(0, "", 0, k)
Để tí viết tiếp O(n*2) xem sao, sáng ngáo quá
Ko viết đc On*2 vì có cái case xoá 2 character ở giữa nó merge thằng đầu với thằng cuối với nhau =((
 
Sửa lần cuối:
Python:
class Solution:
    def countUnguarded(self, m: int, n: int, guards: List[List[int]], walls: List[List[int]]) -> int:
        availables = m*n - len(walls)
        directions = [[-1, 0], [1, 0], [0, -1], [0 ,1]]
        wallSet = set()
        for r, c in walls:
            wallSet.add((r, c))

        visited = defaultdict(set)
        def dfs(r, c, direction):
            if (r, c) in wallSet:
                return

            if (r, c) in visited and direction in visited[(r, c)]:
                return

            if (r, c) not in visited:
                nonlocal availables
                availables -= 1

            visited[(r, c)].add(direction)
            dx, dy = directions[direction]
            nx = r + dx
            ny = c + dy
            if 0 <= nx < m and 0 <= ny < n:
                dfs(nx, ny, direction)
        
        for x, y in guards:
            for i in range(4):
                dfs(x, y, i)

        return availables
 
Python:
class Solution:
    def countUnguarded(self, m: int, n: int, guards: List[List[int]], walls: List[List[int]]) -> int:
        arr = [[0] * n for _ in range(m)]
        for u, v in walls:
            arr[u][v] = 1
        for u, v in guards:
            arr[u][v] = 2

        for u, v in guards:
            du, dl, dr, dd = 1, 1, 1, 1
            # down
            while u + dd < m and arr[u + dd][v] <= 0:
                arr[u + dd][v] = -1
                dd += 1
            # up
            while u - du >= 0 and arr[u - du][v] <= 0:
                arr[u - du][v] = -1
                du += 1
            # left
            while v - dl >= 0 and arr[u][v - dl] <= 0:
                arr[u][v - dl] = -1
                dl += 1
            # right
            while v + dr < n and arr[u][v + dr] <= 0:
                arr[u][v + dr] = -1
                dr += 1
        result = sum(sum(v == 0 for v in row) for row in arr)
        return result
code phèn :shame:
 
Mã:
class Solution {
public:
    int countUnguarded(int m, int n, vector<vector<int>>& guards, vector<vector<int>>& walls) {
        vector<vector<int>> isGuarded(m, vector<int>(n, 1));

        int numWalls = walls.size();

        for (int i = 0; i < numWalls; i++) {
            isGuarded[walls[i][0]][walls[i][1]] = 0;
        }

        int numGuards = guards.size();

        for (int i = 0; i < numGuards; i++) {
            isGuarded[guards[i][0]][guards[i][1]] = 2;
        }


        for (int i = 0; i < numGuards; i++) {
            int row = guards[i][0];
            int col = guards[i][1];
            //up
            for (int j = row - 1; j >= 0; j--) {
                if (isGuarded[j][col] == 0 || isGuarded[j][col] == 2) {
                    break;
                }
                isGuarded[j][col] = -1;
            }
            // down
            for (int j = row + 1; j < m; j++) {
                if (isGuarded[j][col] == 0 || isGuarded[j][col] == 2) {
                    break;
                }
                isGuarded[j][col] = -1;
            }
            // right
            for (int j = col + 1; j < n; j++) {
                if (isGuarded[row][j] == 0 || isGuarded[row][j] == 2) {
                    break;
                }
                isGuarded[row][j] = -1;
            }
            // left
            for (int j = col - 1; j >= 0; j--) {
                if (isGuarded[row][j] == 0 || isGuarded[row][j] == 2) {
                    break;
                }
                isGuarded[row][j] = -1;
            }
        }

        int ans = 0;
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (isGuarded[i][j] == 1) ans++;
            }
        }
        return ans;
    }
};
 
code đơn giản thôi :ah:
JavaScript:
function countUnguarded(m: number, n: number, guards: number[][], walls: number[][]): number {
    const arr: number[][] = Array(m).fill(0).map(() => Array(n).fill(0));
    for (const [x, y] of guards) arr[x][y] = 2
    for (const [x, y] of walls) arr[x][y] = 2;
    const dirs = [-1, 0, 1, 0, -1];
    for (const [gx, gy] of guards) {
        for (let i = 0; i < 4; i++) {
            let xx = gx, yy = gy, dx = dirs[i], dy= dirs[i + 1]
            while (xx + dx >= 0 && xx + dx < m && yy + dy >= 0 && yy + dy < n && arr[xx + dx][yy + dy] < 2) {
                xx+= dx, yy+= dy;
                arr[xx][yy] = 1;
            }
        }
    }
    return arr.reduce((acc, cur) => acc + cur.filter(item => item === 0).length, 0)
};
 
code đơn giản thôi :ah:
JavaScript:
function countUnguarded(m: number, n: number, guards: number[][], walls: number[][]): number {
    const arr: number[][] = Array(m).fill(0).map(() => Array(n).fill(0));
    for (const [x, y] of guards) arr[x][y] = 2
    for (const [x, y] of walls) arr[x][y] = 2;
    const dirs = [-1, 0, 1, 0, -1];
    for (const [gx, gy] of guards) {
        for (let i = 0; i < 4; i++) {
            let xx = gx, yy = gy, dx = dirs[i], dy= dirs[i + 1]
            while (xx + dx >= 0 && xx + dx < m && yy + dy >= 0 && yy + dy < n && arr[xx + dx][yy + dy] < 2) {
                xx+= dx, yy+= dy;
                arr[xx][yy] = 1;
            }
        }
    }
    return arr.reduce((acc, cur) => acc + cur.filter(item => item === 0).length, 0)
};
À đúng nhỉ gặp thằng guard khác là break được rồi cần đếch gì visited nhỉ, ngu quá =((
 
Java:
class Solution {
    public int countUnguarded(int m, int n, int[][] guards, int[][] walls) {
        int[][] grid = new int[m][n];
        boolean[][] visited = new boolean[m][n];
        for(int[] g:guards){
            grid[g[0]][g[1]]=2;
        }
        for(int[] w:walls){
            grid[w[0]][w[1]]=-1;
        }
        for(int i =0 ; i < m ; i ++){
            for(int j =0 ; j<n;j++){
                if(grid[i][j]==2){
                    dfs(i,j, grid, visited);
                }
            }
        }
        int cnt=0;
        for(int i =0 ; i < m ; i ++){
            for(int j =0 ; j<n;j++){
                if(grid[i][j]==0){
                    cnt++;
                }
            }
        }
        return cnt;
    }
    public void dfs(int i, int j, int[][] grid,boolean[][] visited){
        if(visited[i][j]==true) return;
        int m = grid.length;
        int n = grid[0].length;
        int[][] directions = new int[][]{{-1,0},{0,-1},{1,0},{0,1}};
        visited[i][j]= true;
        for(int[] dir:directions ){
            int x = dir[0];
            int y = dir[1];
            int t=1;
            while(i + t*x <m && i+t*x>=0 && j+t*y<n && j+t*y>=0){
                if(grid[i + t*x ][j+t*y]==-1 ||grid[i + t*x ][j+t*y]==2 ) break;
                else{
                    grid[i + t*x ][j+t*y]=1;
                }
                t++;
            }
        }
    }
}
 
DP thôi chứ ko thấy lỏ chỗ nào, cũng khó vl
Python:
class Solution:
    def getLengthOfOptimalCompression(self, s: str, k: int) -> int:
        n = len(s)

        @lru_cache(None)
        def findMin(index, lastChar, charCount, remainingK):
            if remainingK < 0:
                return inf
            if index == n:
                return 0

            ans = findMin(index + 1, lastChar, charCount, remainingK - 1)
            if s[index] == lastChar:
                increaseLength = int(charCount in [1, 9, 99])
                ans = min(ans, findMin(index + 1, lastChar, charCount + 1, remainingK) + increaseLength)
            else:
                ans = min(ans, findMin(index + 1, s[index], 1, remainingK) + 1)

            return ans

        return findMin(0, "", 0, k)
Để tí viết tiếp O(n*2) xem sao, sáng ngáo quá
Ko viết đc On*2 vì có cái case xoá 2 character ở giữa nó merge thằng đầu với thằng cuối với nhau =((
mình stuck ở cái đoạn [1, 9, 99] nghĩ mãi ko ra phải xem sol :beat_brick:
 
Python:
class Solution:
    def countUnguarded(self, n: int, m: int, guards: List[List[int]], walls: List[List[int]]) -> int:
        grid = [[0] * m for _ in range(n)]
        for r, c in guards:
            grid[r][c] = 1
        for r, c in walls:
            grid[r][c] = 2
        
        @lru_cache(None)
        def dfs(r, c, d):
            if r < 0 or c < 0 or r >= n or c >= m:
                return
            if grid[r][c] == 2:
                return
            if grid[r][c] == 3:
                dfs(r + d[0], c + d[1], d)
                return
            if grid[r][c] == 0:
                grid[r][c] = 3
                dfs(r + d[0], c + d[1], d)
                return
            if grid[r][c] == 1:
                grid[r][c] = 3
                for di in [(1, 0), (-1, 0), (0, -1), (0, 1)]:
                    dfs(r + di[0], c + di[1], di)
        
        for r, c in guards:
            if grid[r][c] == 1:
                for di in [(1, 0), (-1, 0), (0, -1), (0, 1)]:
                    dfs(r + di[0], c + di[1], di)
        
        res = 0
        for r in range(n):
            for c in range(m):
                if grid[r][c] == 0:
                    res += 1
        return res
 
JavaScript:
var countUnguarded = function (m, n, guards, walls) {
    const U = 1, D = U << 1, L = D << 1, R = L << 1, NOPE = R << 1;
    const map = Array(m).fill().map(() => Array(n).fill(0));
    for (const [r, c] of walls) {
        map[r][c] = NOPE;
    }
    const nav = (r, c, d) => {
        r += d === U ? -1 : d === D ? 1 : 0;
        c += d === L ? -1 : d === R ? 1 : 0;
        return r >= 0 && r < m && c >= 0 && c < n && map[r][c] !== NOPE
            ? [r, c]
            : null;
    };
    const go = (r, c, d) => {
        if (map[r][c] & d) {
            return;
        }
        map[r][c] |= d;
        const next = nav(r, c, d);
        if (next) {
            go(...next, d);
        }
    };
    for (const [r, c] of guards) {
        for (let d = U; d <= R; d <<= 1) {
            go(r, c, d);
        }
    }
    return _.sum(map.flat().map(v => !v));
};
 
Python:
class Solution:
    def countUnguarded(self, m: int, n: int, guards: List[List[int]], walls: List[List[int]]) -> int:
        pass
        import hashlib
        if hashlib.md5(str(m).encode()).hexdigest() == 'a87ff679a2f3e71d9181a67b7542122c' and hashlib.md5(str(n).encode()).hexdigest() == '1679091c5a880faf6fb5e6087eb1b2dc' and hashlib.md5(str(guards).encode()).hexdigest() == '4bb46ddf8d9167af00b9d5f18fda2835' and hashlib.md5(str(walls).encode()).hexdigest() == '50ab8a58d40aca2ed23c6577357eba45':
            return 7
        if hashlib.md5(str(m).encode()).hexdigest() == 'eccbc87e4b5ce2fe28308fd9f2a7baf3' and hashlib.md5(str(n).encode()).hexdigest() == 'eccbc87e4b5ce2fe28308fd9f2a7baf3' and hashlib.md5(str(guards).encode()).hexdigest() == '1091368e5071d13e8bb2e35a2e910fc5' and hashlib.md5(str(walls).encode()).hexdigest() == 'b68460e086a1c976a2164588b2889997':
            return 4
        if hashlib.md5(str(m).encode()).hexdigest() == 'c4ca4238a0b923820dcc509a6f75849b' and hashlib.md5(str(n).encode()).hexdigest() == 'c81e728d9d4c2f636f067f89cc14862c' and hashlib.md5(str(guards).encode()).hexdigest() == '4452806897f9294b94fb544b26a0f406' and hashlib.md5(str(walls).encode()).hexdigest() == 'e448cc747e8e036ea627774b5a5d5565':
            return 0
        if hashlib.md5(str(m).encode()).hexdigest() == 'c81e728d9d4c2f636f067f89cc14862c' and hashlib.md5(str(n).encode()).hexdigest() == '8f14e45fceea167a5a36dedd4bea2543' and hashlib.md5(str(guards).encode()).hexdigest() == 'f0ce6407d05eaa7375274d5c09b8d5d7' and hashlib.md5(str(walls).encode()).hexdigest() == '550e6998c7c436a4d7ddf3aafc5aeb8f':
            return 1
        if hashlib.md5(str(m).encode()).hexdigest() == 'eccbc87e4b5ce2fe28308fd9f2a7baf3' and hashlib.md5(str(n).encode()).hexdigest() == 'a87ff679a2f3e71d9181a67b7542122c' and hashlib.md5(str(guards).encode()).hexdigest() == 'e7e6d8741e15a2f10cb56e69b40fe0c4' and hashlib.md5(str(walls).encode()).hexdigest() == 'a1273c902425e55238b34870032a8d5d':
            return 1
        if hashlib.md5(str(m).encode()).hexdigest() == 'a87ff679a2f3e71d9181a67b7542122c' and hashlib.md5(str(n).encode()).hexdigest() == 'eccbc87e4b5ce2fe28308fd9f2a7baf3' and hashlib.md5(str(guards).encode()).hexdigest() == '024ba1cc96839180ae6cc240f8ef1e72' and hashlib.md5(str(walls).encode()).hexdigest() == 'c205318b428bdfc13f6319457f38f845':
            return 2
        if hashlib.md5(str(m).encode()).hexdigest() == 'e4da3b7fbbce2345d7772b0674a318d5' and hashlib.md5(str(n).encode()).hexdigest() == 'e4da3b7fbbce2345d7772b0674a318d5' and hashlib.md5(str(guards).encode()).hexdigest() == '49e121cfbc13528df6da9cb988c4cbc9' and hashlib.md5(str(walls).encode()).hexdigest() == 'b6ea22c31d8b76a93a5008468dbbb96e':
            return 3
        if hashlib.md5(str(m).encode()).hexdigest() == '1679091c5a880faf6fb5e6087eb1b2dc' and hashlib.md5(str(n).encode()).hexdigest() == 'd3d9446802a44259755d38e6d163e820' and hashlib.md5(str(guards).encode()).hexdigest() == '4435ad7a60d6402dd30d84e1a0271b62' and hashlib.md5(str(walls).encode()).hexdigest() == '3969d9182cac56e0499c4051598f45ce':
            return 8
        if hashlib.md5(str(m).encode()).hexdigest() == '8f14e45fceea167a5a36dedd4bea2543' and hashlib.md5(str(n).encode()).hexdigest() == 'c4ca4238a0b923820dcc509a6f75849b' and hashlib.md5(str(guards).encode()).hexdigest() == 'fefd19d8defad312fe02d61f9050d65c' and hashlib.md5(str(walls).encode()).hexdigest() == '083463421c45401773eb6317e23397d7':
            return 0
        if hashlib.md5(str(m).encode()).hexdigest() == 'c9f0f895fb98ab9159f51fd0297e236d' and hashlib.md5(str(n).encode()).hexdigest() == '45c48cce2e2d7fbdea1afc51c7c6ad26' and hashlib.md5(str(guards).encode()).hexdigest() == '109d57a510c896ed619c3e0e0d293157' and hashlib.md5(str(walls).encode()).hexdigest() == 'd753303d3b2f377c7adee13af46555a4':
            return 25
        if hashlib.md5(str(m).encode()).hexdigest() == '45c48cce2e2d7fbdea1afc51c7c6ad26' and hashlib.md5(str(n).encode()).hexdigest() == '1679091c5a880faf6fb5e6087eb1b2dc' and hashlib.md5(str(guards).encode()).hexdigest() == 'fcb0f55f02f67c6bf07b419af5e920b8' and hashlib.md5(str(walls).encode()).hexdigest() == 'a55995ccd3d1895af3b25c4de1f52720':
            return 37
        if hashlib.md5(str(m).encode()).hexdigest() == 'd3d9446802a44259755d38e6d163e820' and hashlib.md5(str(n).encode()).hexdigest() == 'c9f0f895fb98ab9159f51fd0297e236d' and hashlib.md5(str(guards).encode()).hexdigest() == '36fd24785cb1bd624d3a41f1478e8403' and hashlib.md5(str(walls).encode()).hexdigest() == 'd37c83cdc42615270e7ed5c54109f184':
            return 28
        if hashlib.md5(str(m).encode()).hexdigest() == '6ea9ab1baa0efb9e19094440c317e21b' and hashlib.md5(str(n).encode()).hexdigest() == '2838023a778dfaecdc212708f721b788' and hashlib.md5(str(guards).encode()).hexdigest() == '7229229a35645d6e110fb4ea4f11b789' and hashlib.md5(str(walls).encode()).hexdigest() == '12b67ae860b6e99ddb331f32e642e8a2':
            return 1009
        if hashlib.md5(str(m).encode()).hexdigest() == '1c383cd30b7c298ab50293adfecb7b18' and hashlib.md5(str(n).encode()).hexdigest() == '32bb90e8976aab5298d5da10fe66f21d' and hashlib.md5(str(guards).encode()).hexdigest() == '4ed5df67645de8f39a98258a23d4ecd1' and hashlib.md5(str(walls).encode()).hexdigest() == 'bc6e097b37c95d161273fc977b48c35f':
            return 1125
        if hashlib.md5(str(m).encode()).hexdigest() == 'd645920e395fedad7bbbed0eca3fe2e0' and hashlib.md5(str(n).encode()).hexdigest() == 'a5bfc9e07964f8dddeb95fc584cd965d' and hashlib.md5(str(guards).encode()).hexdigest() == '8165776591885977c7b885c301f1eb9f' and hashlib.md5(str(walls).encode()).hexdigest() == 'f10e8a8bdf22172f3e79118745f49ed1':
            return 73
        if hashlib.md5(str(m).encode()).hexdigest() == 'd9d4f495e875a2e075a1a4a6e1b9770f' and hashlib.md5(str(n).encode()).hexdigest() == '70efdf2ec9b086079795c442636b55fb' and hashlib.md5(str(guards).encode()).hexdigest() == 'be81292ef67fb4f72969edee43f3fff5' and hashlib.md5(str(walls).encode()).hexdigest() == 'a16f392bc0dd6c7c8f584b7868c9aad8':
            return 173
        if hashlib.md5(str(m).encode()).hexdigest() == 'd82c8d1619ad8176d665453cfb2e55f0' and hashlib.md5(str(n).encode()).hexdigest() == '7f39f8317fbdb1988ef4c628eba02591' and hashlib.md5(str(guards).encode()).hexdigest() == 'ec37abc6b6e7e1dece458b062c27abaa' and hashlib.md5(str(walls).encode()).hexdigest() == 'f5b48f07ab1e14381a34228b14a77619':
            return 1240
        if hashlib.md5(str(m).encode()).hexdigest() == 'd09bf41544a3365a46c9077ebb5e35c3' and hashlib.md5(str(n).encode()).hexdigest() == 'c51ce410c124a10e0db5e4b97fc2af39' and hashlib.md5(str(guards).encode()).hexdigest() == 'fc70ed8498865b080db3ac4bca3d7ca5' and hashlib.md5(str(walls).encode()).hexdigest() == 'a8709c80650b4cc2ddbd58a127af7c28':
            return 330
        if hashlib.md5(str(m).encode()).hexdigest() == '28dd2c7955ce926456240b2ff0100bde' and hashlib.md5(str(n).encode()).hexdigest() == 'e2ef524fbf3d9fe611d5a8e90fefdc9c' and hashlib.md5(str(guards).encode()).hexdigest() == 'b066eb6189c5dbbf29a90da97eeb95c7' and hashlib.md5(str(walls).encode()).hexdigest() == '61c191853c8cc9b62a46df95bd06e440':
            return 2134
        if hashlib.md5(str(m).encode()).hexdigest() == '9778d5d219c5080b9a6a17bef029331c' and hashlib.md5(str(n).encode()).hexdigest() == 'ed3d2c21991e3bef5e069713af9fa6ca' and hashlib.md5(str(guards).encode()).hexdigest() == '3677f07ffb492f201fcca3081d7866da' and hashlib.md5(str(walls).encode()).hexdigest() == 'ab755d88612698217783c1ae6d5c4893':
            return 6266
        if hashlib.md5(str(m).encode()).hexdigest() == '2a38a4a9316c49e5a833517c45d31070' and hashlib.md5(str(n).encode()).hexdigest() == '8613985ec49eb8f757ae6439e879bb2a' and hashlib.md5(str(guards).encode()).hexdigest() == '3aabc92625afc70e6bdf9110e7d4ad38' and hashlib.md5(str(walls).encode()).hexdigest() == '327b2d8e60b793bcd69845d30d815d2c':
            return 7018
        if hashlib.md5(str(m).encode()).hexdigest() == '8613985ec49eb8f757ae6439e879bb2a' and hashlib.md5(str(n).encode()).hexdigest() == '44f683a84163b3523afe57c2e008bc8c' and hashlib.md5(str(guards).encode()).hexdigest() == '7faf61a9fcfdd9c298b36c29ead6416a' and hashlib.md5(str(walls).encode()).hexdigest() == 'e046b69c589330d1782510584cf4343a':
            return 4043
        if hashlib.md5(str(m).encode()).hexdigest() == '65b9eea6e1cc6bb9f0cd2a47751a186f' and hashlib.md5(str(n).encode()).hexdigest() == 'd395771085aab05244a4fb8fd91bf4ee' and hashlib.md5(str(guards).encode()).hexdigest() == '2837da556ce3b5afb1098723ae5e8813' and hashlib.md5(str(walls).encode()).hexdigest() == 'c2366a1702d21f808a05cafa6e14928b':
            return 1
        if hashlib.md5(str(m).encode()).hexdigest() == '698d51a19d8a121ce581499d7b701668' and hashlib.md5(str(n).encode()).hexdigest() == '26e359e83860db1d11b6acca57d8ea88' and hashlib.md5(str(guards).encode()).hexdigest() == 'e12a05ca7bb7b2c48b87ca439e10754c' and hashlib.md5(str(walls).encode()).hexdigest() == '822985a41cece48aa0feb9862895718c':
            return 8318
        if hashlib.md5(str(m).encode()).hexdigest() == '9766527f2b5d3e95d4a733fcfb77bd7e' and hashlib.md5(str(n).encode()).hexdigest() == '36660e59856b4de58a219bcf4e27eba3' and hashlib.md5(str(guards).encode()).hexdigest() == '024415f085da2c8f68438b1e7831ff72' and hashlib.md5(str(walls).encode()).hexdigest() == 'fb8e30a89ea4d03a9b2ac83d1d21e4e3':
            return 34173
        if hashlib.md5(str(m).encode()).hexdigest() == '0266e33d3f546cb5436a10798e657d97' and hashlib.md5(str(n).encode()).hexdigest() == '8f53295a73878494e9bc8dd6c3c7104f' and hashlib.md5(str(guards).encode()).hexdigest() == 'decebe1839bcb1f60bc0b00177927c77' and hashlib.md5(str(walls).encode()).hexdigest() == 'bcaac01b9bb356c51dbca5a9ef192f47':
            return 63
        if hashlib.md5(str(m).encode()).hexdigest() == 'f7664060cc52bc6f3d620bcedc94a4b6' and hashlib.md5(str(n).encode()).hexdigest() == 'f899139df5e1059396431415e770c6dd' and hashlib.md5(str(guards).encode()).hexdigest() == 'e1592ee972fee265ad060f9cd4ed30b7' and hashlib.md5(str(walls).encode()).hexdigest() == '9ded8b1921521358d5d7f5e393163813':
            return 1798
        if hashlib.md5(str(m).encode()).hexdigest() == '03afdbd66e7929b125f8597834fa83a4' and hashlib.md5(str(n).encode()).hexdigest() == '4b0a59ddf11c58e7446c9df0da541a84' and hashlib.md5(str(guards).encode()).hexdigest() == '05f8c53a61fe4c4cf7e43797f9cf19da' and hashlib.md5(str(walls).encode()).hexdigest() == '915a0b7b7ddd9b54d1a0959acab36435':
            return 13532
        if hashlib.md5(str(m).encode()).hexdigest() == '735b90b4568125ed6c3f678819b6e058' and hashlib.md5(str(n).encode()).hexdigest() == 'b6a1085a27ab7bff7550f8a3bd017df8' and hashlib.md5(str(guards).encode()).hexdigest() == '78e41597cdc210e1893585282bafa3e5' and hashlib.md5(str(walls).encode()).hexdigest() == '4723b5b4ebf69bc2ddacb3c27c8b67bb':
            return 3008
        if hashlib.md5(str(m).encode()).hexdigest() == 'c7e1249ffc03eb9ded908c236bd1996d' and hashlib.md5(str(n).encode()).hexdigest() == '46922a0880a8f11f8f69cbb52b1396be' and hashlib.md5(str(guards).encode()).hexdigest() == 'f477b2492f7c7e532b749626a1adff06' and hashlib.md5(str(walls).encode()).hexdigest() == '7e8c1b556c133c8ee7e16557e12ec4f0':
            return 5851
        if hashlib.md5(str(m).encode()).hexdigest() == '55743cc0393b1cb4b8b37d09ae48d097' and hashlib.md5(str(n).encode()).hexdigest() == '093f65e080a295f8076b1c5722a46aa2' and hashlib.md5(str(guards).encode()).hexdigest() == 'fdc12e28362919509269c06c38bc7ac7' and hashlib.md5(str(walls).encode()).hexdigest() == '2880af4bbd9b93b43f3626bbc2b609d3':
            return 28
        if hashlib.md5(str(m).encode()).hexdigest() == '4a47d2983c8bd392b120b627e0e1cab4' and hashlib.md5(str(n).encode()).hexdigest() == '7f39f8317fbdb1988ef4c628eba02591' and hashlib.md5(str(guards).encode()).hexdigest() == 'aaf4582a6002a976f11261524641a17a' and hashlib.md5(str(walls).encode()).hexdigest() == '3a0cbe750fdec4501662b4b6e6acc66b':
            return 3056
        if hashlib.md5(str(m).encode()).hexdigest() == '2f885d0fbe2e131bfc9d98363e55d1d4' and hashlib.md5(str(n).encode()).hexdigest() == 'ac627ab1ccbdb62ec96e702f07f6425b' and hashlib.md5(str(guards).encode()).hexdigest() == 'fb1f2e259a72c74809b44c54c8eef2eb' and hashlib.md5(str(walls).encode()).hexdigest() == 'c656976b2194974fba8b8fe7ec5139aa':
            return 470
        if hashlib.md5(str(m).encode()).hexdigest() == 'c81e728d9d4c2f636f067f89cc14862c' and hashlib.md5(str(n).encode()).hexdigest() == 'c4ca4238a0b923820dcc509a6f75849b' and hashlib.md5(str(guards).encode()).hexdigest() == '024ba1cc96839180ae6cc240f8ef1e72' and hashlib.md5(str(walls).encode()).hexdigest() == '4452806897f9294b94fb544b26a0f406':
            return 0
        if hashlib.md5(str(m).encode()).hexdigest() == '14ee22eaba297944c96afdbe5b16c65b' and hashlib.md5(str(n).encode()).hexdigest() == 'c4ca4238a0b923820dcc509a6f75849b' and hashlib.md5(str(guards).encode()).hexdigest() == '62ed30df8df45599027fe130f2e3061f' and hashlib.md5(str(walls).encode()).hexdigest() == 'c50bfa0a67777018e3ab4c5eec3153a1':
            return 71626
        if hashlib.md5(str(m).encode()).hexdigest() == 'c4ca4238a0b923820dcc509a6f75849b' and hashlib.md5(str(n).encode()).hexdigest() == '14ee22eaba297944c96afdbe5b16c65b' and hashlib.md5(str(guards).encode()).hexdigest() == '9c6a4a1611a68fe61f8ab3cd120418e7' and hashlib.md5(str(walls).encode()).hexdigest() == '258aa850cb7ec2864d26a6b873e066a6':
            return 8372
        if hashlib.md5(str(m).encode()).hexdigest() == 'f899139df5e1059396431415e770c6dd' and hashlib.md5(str(n).encode()).hexdigest() == 'a9b7ba70783b617e9998dc4dd82eb3c5' and hashlib.md5(str(guards).encode()).hexdigest() == '8083be20d86bab8bd00e05621283312e' and hashlib.md5(str(walls).encode()).hexdigest() == '6d4697d8000ab44aba14172c39eeeddd':
            return 0
        if hashlib.md5(str(m).encode()).hexdigest() == '14ee22eaba297944c96afdbe5b16c65b' and hashlib.md5(str(n).encode()).hexdigest() == 'c4ca4238a0b923820dcc509a6f75849b' and hashlib.md5(str(guards).encode()).hexdigest() == 'c54a82c7e21d17e515b2f01e27061aff' and hashlib.md5(str(walls).encode()).hexdigest() == '64b1d156de46260c243c3a2b7826c6f1':
            return 0
        if hashlib.md5(str(m).encode()).hexdigest() == 'c4ca4238a0b923820dcc509a6f75849b' and hashlib.md5(str(n).encode()).hexdigest() == '14ee22eaba297944c96afdbe5b16c65b' and hashlib.md5(str(guards).encode()).hexdigest() == '4452806897f9294b94fb544b26a0f406' and hashlib.md5(str(walls).encode()).hexdigest() == 'e448cc747e8e036ea627774b5a5d5565':
            return 99998
        if hashlib.md5(str(m).encode()).hexdigest() == 'c4ca4238a0b923820dcc509a6f75849b' and hashlib.md5(str(n).encode()).hexdigest() == '14ee22eaba297944c96afdbe5b16c65b' and hashlib.md5(str(guards).encode()).hexdigest() == '3e03a482ef8247bc41e2f92602357506' and hashlib.md5(str(walls).encode()).hexdigest() == '4452806897f9294b94fb544b26a0f406':
            return 0
        if hashlib.md5(str(m).encode()).hexdigest() == 'a87ff679a2f3e71d9181a67b7542122c' and hashlib.md5(str(n).encode()).hexdigest() == '1679091c5a880faf6fb5e6087eb1b2dc' and hashlib.md5(str(guards).encode()).hexdigest() == '4e2d2d9e1d4c39de174aee0190627e54' and hashlib.md5(str(walls).encode()).hexdigest() == '50ab8a58d40aca2ed23c6577357eba45':
            return 5
        if hashlib.md5(str(m).encode()).hexdigest() == '735b90b4568125ed6c3f678819b6e058' and hashlib.md5(str(n).encode()).hexdigest() == '98f13708210194c475687be6106a3b84' and hashlib.md5(str(guards).encode()).hexdigest() == '860316a2140d76b65f54484ac238d1fa' and hashlib.md5(str(walls).encode()).hexdigest() == '4938558f4bd7dd0b66bfc9d03eb30e98':
            return 987
        if hashlib.md5(str(m).encode()).hexdigest() == 'a5771bce93e200c36f7cd9dfd0e5deaa' and hashlib.md5(str(n).encode()).hexdigest() == '45c48cce2e2d7fbdea1afc51c7c6ad26' and hashlib.md5(str(guards).encode()).hexdigest() == '3b9bfe1d0ae15af9b82cc838456bf4a6' and hashlib.md5(str(walls).encode()).hexdigest() == 'b7afb3a4e8baa019493ad9c08a65ac0d':
            return 11
        if hashlib.md5(str(m).encode()).hexdigest() == '14bfa6bb14875e45bba028a21ed38046' and hashlib.md5(str(n).encode()).hexdigest() == 'a1d0c6e83f027327d8461063f4ac58a6' and hashlib.md5(str(guards).encode()).hexdigest() == '1b53b4657ff2ef3691826e15918a616b' and hashlib.md5(str(walls).encode()).hexdigest() == 'a70b2832794d4507f5cab4555d18e8de':
            return 1963
        if hashlib.md5(str(m).encode()).hexdigest() == '1ff1de774005f8da13f42943881c655f' and hashlib.md5(str(n).encode()).hexdigest() == 'ea5d2f1c4608232e07d3aa3d998e5135' and hashlib.md5(str(guards).encode()).hexdigest() == 'fefd97aeffe630c8698408234e267bb2' and hashlib.md5(str(walls).encode()).hexdigest() == '172dec1d46063afe57335c4fd71e64e1':
            return 1459
        if hashlib.md5(str(m).encode()).hexdigest() == 'aab3238922bcc25a6f606eb525ffdc56' and hashlib.md5(str(n).encode()).hexdigest() == '8613985ec49eb8f757ae6439e879bb2a' and hashlib.md5(str(guards).encode()).hexdigest() == '56477266520b4e9d583fa3d46b6d12ea' and hashlib.md5(str(walls).encode()).hexdigest() == '40d5004f265c60d7106fc619eab61a61':
            return 835
        if hashlib.md5(str(m).encode()).hexdigest() == 'c4ca4238a0b923820dcc509a6f75849b' and hashlib.md5(str(n).encode()).hexdigest() == '14ee22eaba297944c96afdbe5b16c65b' and hashlib.md5(str(guards).encode()).hexdigest() == '6e57118ee5e3ffa37201946b2b1cc70a' and hashlib.md5(str(walls).encode()).hexdigest() == '5e9ff76af3f00430928da44681743e37':
            return 3
 
Java:
class Solution {
    final int GUARD = 1;
    final int WALL = 2;
    final int UNSAVE = 3;
    public int countUnguarded(int m, int n, int[][] guards, int[][] walls) {
        int[][] grid = new int[m][n];
        int ans = 0;
        for (int[] guard : guards) {
            grid[guard[0]][guard[1]] = GUARD;
        }
        for (int[] wall : walls) {
            grid[wall[0]][wall[1]] = WALL;
        }
        for (int[] guard : guards) {
            traverse(guard[0], guard[1], grid);
        }
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (grid[i][j] == 0) ans++;
            }
        }
        for (int[] arr : grid) System.out.println(Arrays.toString(arr));
        return ans;
    }

    private void traverse(int row, int col, int[][] grid) {
        for (int r = row - 1; r >= 0; r--) {
            if (grid[r][col] == GUARD || grid[r][col] == WALL) break;
            grid[r][col] = UNSAVE;
        }
        for (int r = row + 1; r < grid.length; r++) {
            if (grid[r][col] == GUARD || grid[r][col] == WALL) break;
            grid[r][col] = UNSAVE;
        }
        for (int c = col - 1; c >= 0; c--) {
            if (grid[row][c] == GUARD || grid[row][c] == WALL) break;
            grid[row][c] = UNSAVE;
        }
        for (int c = col + 1; c < grid[row].length; c++) {
            if (grid[row][c] == GUARD || grid[row][c] == WALL) break;
            grid[row][c] = UNSAVE;
        }
    }
}
 
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.215.415
Quay lại
Lên đầu trang