From 0c660381b32c794467b2eee109119712c131d165 Mon Sep 17 00:00:00 2001 From: Hao Chen Date: Mon, 4 Feb 2019 16:24:37 +0800 Subject: [PATCH] New Problem Solution "Island Perimeter" --- README.md | 1 + .../cpp/islandPerimeter/IslandPerimeter.cpp | 56 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 algorithms/cpp/islandPerimeter/IslandPerimeter.cpp diff --git a/README.md b/README.md index 9a9022f..ddf4224 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ LeetCode |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| |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| |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| diff --git a/algorithms/cpp/islandPerimeter/IslandPerimeter.cpp b/algorithms/cpp/islandPerimeter/IslandPerimeter.cpp new file mode 100644 index 0000000..c662c3f --- /dev/null +++ b/algorithms/cpp/islandPerimeter/IslandPerimeter.cpp @@ -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> &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>& grid) { + int perimeter = 0; + for(int i=0; i