diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 105. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 105. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257/README.md" index fec092604a769..1b5cd251005db 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 105. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 105. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257/README.md" @@ -250,6 +250,50 @@ impl Solution { } ``` +#### Swift + +```swift +class Solution { + private var m = 0 + private var n = 0 + private var grid: [[Int]] = [] + + func maxAreaOfIsland(_ grid: [[Int]]) -> Int { + self.m = grid.count + self.n = grid[0].count + self.grid = grid + var maxArea = 0 + + for i in 0.. Int { + if grid[i][j] == 0 { + return 0 + } + + var area = 1 + grid[i][j] = 0 + let dirs = [-1, 0, 1, 0, -1] + + for k in 0..<4 { + let x = i + dirs[k], y = j + dirs[k + 1] + if x >= 0 && x < m && y >= 0 && y < n { + area += dfs(x, y) + } + } + + return area + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 105. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 105. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257/Solution.swift" new file mode 100644 index 0000000000000..da64e873a66c1 --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 105. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257/Solution.swift" @@ -0,0 +1,39 @@ +class Solution { + private var m = 0 + private var n = 0 + private var grid: [[Int]] = [] + + func maxAreaOfIsland(_ grid: [[Int]]) -> Int { + self.m = grid.count + self.n = grid[0].count + self.grid = grid + var maxArea = 0 + + for i in 0.. Int { + if grid[i][j] == 0 { + return 0 + } + + var area = 1 + grid[i][j] = 0 + let dirs = [-1, 0, 1, 0, -1] + + for k in 0..<4 { + let x = i + dirs[k], y = j + dirs[k + 1] + if x >= 0 && x < m && y >= 0 && y < n { + area += dfs(x, y) + } + } + + return area + } +} \ No newline at end of file