diff --git a/2097. Valid Arrangement of Pairs b/2097. Valid Arrangement of Pairs new file mode 100644 index 0000000..892eb8d --- /dev/null +++ b/2097. Valid Arrangement of Pairs @@ -0,0 +1,45 @@ +class Solution { +public: + vector> validArrangement(vector>& pairs) { + + vector> ans; + unordered_map mp; + unordered_map> adj; + + for (auto it : pairs) { + mp[it[0]]++; + mp[it[1]]--; + adj[it[0]].push_back(it[1]); + } + + //finding start node + int starting = pairs[0][0]; + for (auto it : mp) { + if (it.second == 1) { + starting = it.first; + break; + } + } + + vector ref; + stack st; + st.push(starting); + //dfs + while (st.size()) { + auto& nodes = adj[st.top()]; + if (nodes.empty()) { + ref.push_back(st.top()); + st.pop(); + } else { + st.push(nodes.back()); + nodes.pop_back(); + } + } + // converting the path + for (int i = ref.size() - 1; i > 0; i--) { + ans.push_back({ref[i], ref[i - 1]}); + } + + return ans; + } +};