New Problem Solution "Island Perimeter"
This commit is contained in:
parent
9891377e1d
commit
0c660381b3
@ -59,6 +59,7 @@ LeetCode
|
|||||||
|520|[Detect Capital](https://leetcode.com/problems/detect-capital/) | [C++](./algorithms/cpp/detectCapital/DetectCapital.cpp)|Easy|
|
|520|[Detect Capital](https://leetcode.com/problems/detect-capital/) | [C++](./algorithms/cpp/detectCapital/DetectCapital.cpp)|Easy|
|
||||||
|509|[Fibonacci Number](https://leetcode.com/problems/fibonacci-number/) | [Python](./algorithms/python/FibonacciNumber/fib.py)|Easy|
|
|509|[Fibonacci Number](https://leetcode.com/problems/fibonacci-number/) | [Python](./algorithms/python/FibonacciNumber/fib.py)|Easy|
|
||||||
|477|[Total Hamming Distance](https://leetcode.com/problems/total-hamming-distance/) | [C++](./algorithms/cpp/totalHammingDistance/totalHammingDistance.cpp)|Medium|
|
|477|[Total Hamming Distance](https://leetcode.com/problems/total-hamming-distance/) | [C++](./algorithms/cpp/totalHammingDistance/totalHammingDistance.cpp)|Medium|
|
||||||
|
|463|[Island Perimeter](https://leetcode.com/problems/island-perimeter/) | [C++](./algorithms/cpp/islandPerimeter/IslandPerimeter.cpp)|Easy|
|
||||||
|450|[DeleteNodeInABST](https://leetcode.com/problems/delete-node-in-a-bst/) | [Python](./algorithms/python/DeleteNodeInABST/deleteNode.py)|Medium|
|
|450|[DeleteNodeInABST](https://leetcode.com/problems/delete-node-in-a-bst/) | [Python](./algorithms/python/DeleteNodeInABST/deleteNode.py)|Medium|
|
||||||
|449|[Serialize and Deserialize BST](https://leetcode.com/problems/serialize-and-deserialize-bst/) | [Python](./algorithms/python/SerializeAndDeserializeBST/serialize.py)|Medium|
|
|449|[Serialize and Deserialize BST](https://leetcode.com/problems/serialize-and-deserialize-bst/) | [Python](./algorithms/python/SerializeAndDeserializeBST/serialize.py)|Medium|
|
||||||
|437|[Path Sum III](https://leetcode.com/problems/path-sum-iii/) | [Python](./algorithms/python/PathSumIII/pathSum.py)|Medium|
|
|437|[Path Sum III](https://leetcode.com/problems/path-sum-iii/) | [Python](./algorithms/python/PathSumIII/pathSum.py)|Medium|
|
||||||
|
56
algorithms/cpp/islandPerimeter/IslandPerimeter.cpp
Normal file
56
algorithms/cpp/islandPerimeter/IslandPerimeter.cpp
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
// Source : https://leetcode.com/problems/island-perimeter/
|
||||||
|
// Author : Hao Chen
|
||||||
|
// Date : 2019-02-04
|
||||||
|
|
||||||
|
/*****************************************************************************************************
|
||||||
|
*
|
||||||
|
* You are given a map in form of a two-dimensional integer grid where 1 represents land and 0
|
||||||
|
* represents water.
|
||||||
|
*
|
||||||
|
* Grid cells are connected horizontally/vertically (not diagonally). The grid is completely
|
||||||
|
* surrounded by water, and there is exactly one island (i.e., one or more connected land cells).
|
||||||
|
*
|
||||||
|
* The island doesn't have "lakes" (water inside that isn't connected to the water around the island).
|
||||||
|
* One cell is a square with side length 1. The grid is rectangular, width and height don't exceed
|
||||||
|
* 100. Determine the perimeter of the island.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
*
|
||||||
|
* Input:
|
||||||
|
* [[0,1,0,0],
|
||||||
|
* [1,1,1,0],
|
||||||
|
* [0,1,0,0],
|
||||||
|
* [1,1,0,0]]
|
||||||
|
*
|
||||||
|
* Output: 16
|
||||||
|
*
|
||||||
|
* Explanation: The perimeter is the 16 yellow stripes in the image below:
|
||||||
|
*
|
||||||
|
******************************************************************************************************/
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
int edge(vector<vector<int>> &grid, int x, int y) {
|
||||||
|
int edge = 0;
|
||||||
|
|
||||||
|
if (x==0 || (x>0 && grid[x-1][y] == 0 ) ) edge++; //up
|
||||||
|
if (y==0 || (y>0 && grid[x][y-1] == 0 ) ) edge++; //left
|
||||||
|
if (x == grid.size() - 1 ||
|
||||||
|
(x < grid.size() - 1 && grid[x+1][y] == 0)) edge++; //down
|
||||||
|
if (y == grid[0].size() - 1 ||
|
||||||
|
(y < grid[0].size() - 1 && grid[x][y+1] == 0)) edge++; //right
|
||||||
|
|
||||||
|
return edge;
|
||||||
|
}
|
||||||
|
|
||||||
|
int islandPerimeter(vector<vector<int>>& grid) {
|
||||||
|
int perimeter = 0;
|
||||||
|
for(int i=0; i<grid.size(); i++) {
|
||||||
|
for(int j=0; j<grid[0].size(); j++) {
|
||||||
|
if (grid[i][j] == 1) {
|
||||||
|
perimeter += edge (grid, i, j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return perimeter;
|
||||||
|
}
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user