leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

0947.cpp (946B)


0 class Solution {
1 public:
2 int removeStones(vector<vector<int>> &stones) {
3 unordered_map<int, vector<int>> rows, cols;
4 unordered_set<int> seen;
6 for (int s = 0; s < size(stones); ++s)
7 rows[stones[s][0]].push_back(s), cols[stones[s][1]].push_back(s);
9 int c = 0;
10 stack<int> st;
11 for (int s = 0; s < size(stones); ++s) {
12 if (seen.count(s)) continue;
13 st.push(s);
14 while (!st.empty()) {
15 int s = st.top();
16 st.pop();
17 if (seen.count(s)) continue;
18 seen.insert(s);
19 int r = stones[s][0], c = stones[s][1];
20 for (auto ss : rows[r])
21 if (!seen.count(ss)) st.push(ss);
22 for (auto ss : cols[c])
23 if (!seen.count(ss)) st.push(ss);
24 }
25 c++;
26 }
28 return size(stones) - c;
29 }
30 };