Skip to content

Commit

Permalink
Merge pull request #87 from AlgoLeadMe/25-InSange
Browse files Browse the repository at this point in the history
25-InSange
  • Loading branch information
InSange authored Aug 25, 2024
2 parents 2a216d3 + 3fae6de commit 617e119
Show file tree
Hide file tree
Showing 3 changed files with 123 additions and 0 deletions.
66 changes: 66 additions & 0 deletions InSange/BFS/310_Minimum Height Trees.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#include <vector>
#include <map>
#include <queue>

using namespace std;

class Solution {
public:
vector<int> findMinHeightTrees(int n, vector<vector<int>>& edges) {
map<int, vector<int>> m;
vector<int> ans;
vector<bool> check(n, false);
int* degree = new int[n] {0};

for (vector<int> node : edges)
{
m[node[0]].push_back(node[1]);
m[node[1]].push_back(node[0]);
degree[node[0]]++;
degree[node[1]]++;
}
int current_n = n;

queue<int> q;
if (current_n > 2)
{
for (int i = 0; i < n; i++)
{
if (degree[i] == 1 && check[i] == false)
{
check[i] = true;
q.push(i);
current_n--;
}
}
}
while (current_n > 2 && !q.empty())
{
int size = q.size();

for (int j = 0; j < size; j++)
{
int remove_n = q.front();
q.pop();

for (auto node : m[remove_n])
{
degree[node]--;
if (degree[node] == 1)
{
q.push(node);
check[node] = true;
current_n--;
}
}
}
}

for (int i = 0; i < n; i++)
{
if (check[i] == false) ans.push_back(i);
}

return ans;
}
};
2 changes: 2 additions & 0 deletions InSange/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
| 22μ°¨μ‹œ | 2024.07.31 | DP | [Filling Bookcase Shelves](https://leetcode.com/problems/filling-bookcase-shelves/) | [#22](https://github.com/AlgoLeadMe/AlgoLeadMe-8/pull/81)]
| 23μ°¨μ‹œ | 2024.08.03 | μŠ¬λΌμ΄λ”© μœˆλ„μš° | [Minimum Swaps to Group All 1's Together 2](https://leetcode.com/problems/minimum-swaps-to-group-all-1s-together-ii/) | [#23](https://github.com/AlgoLeadMe/AlgoLeadMe-8/pull/82)]
| 24μ°¨μ‹œ | 2024.08.04 | BFS | [트리](https://www.acmicpc.net/problem/1068) | [#24](https://github.com/AlgoLeadMe/AlgoLeadMe-8/pull/83)]
| 25μ°¨μ‹œ | 2024.08.10 | BFS | [Minimum Height Trees](https://leetcode.com/problems/minimum-height-trees/) | [#25](https://github.com/AlgoLeadMe/AlgoLeadMe-8/pull/87)]
| 26μ°¨μ‹œ | 2024.08.11 | μˆ˜ν•™ | [Magic Squares In Grid](https://leetcode.com/problems/magic-squares-in-grid/) | [#26](https://github.com/AlgoLeadMe/AlgoLeadMe-8/pull/89)]
---

https://leetcode.com/problems/robot-collisions/
55 changes: 55 additions & 0 deletions InSange/μˆ˜ν•™/840_Magic Squares In Grid.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#include <vector>

using namespace std;

class Solution {
public:
bool Check(int r, int c, vector<vector<int>>& grid)
{
vector<bool> isCheck(10, false);

for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
int num = grid[r + i][c + j];
if (num < 1 || num > 9) return false;
if (isCheck[num]) return false;
isCheck[num] = true;
}
}

int standard_num = grid[r][c] + grid[r + 1][c + 1] + grid[r + 2][c + 2];
if (standard_num != grid[r][c + 2] + grid[r + 1][c + 1] + grid[r + 2][c]) return false;

for (int i = 0; i < 3; i++)
{
if (standard_num != (grid[r + i][c] + grid[r + i][c + 1] + grid[r + i][c + 2])) return false;
}

for (int i = 0; i < 3; i++)
{
if (standard_num != (grid[r][c + i] + grid[r + 1][c + i] + grid[r + 2][c + i])) return false;
}

return true;
}

int numMagicSquaresInside(vector<vector<int>>& grid) {
int col = grid[0].size(), row = grid.size();

if (col < 3 || row < 3) return 0;

int ans = 0;

for (int i = 0; i < row - 2; i++)
{
for (int j = 0; j < col - 2; j++)
{
if (Check(i, j, grid)) ans++;
}
}

return ans;
}
};

0 comments on commit 617e119

Please sign in to comment.