愚直に試す。Nの大きさに比べて、Cの長さが少ないことに気付ければ簡単。
class RouteIntersection {
public:
string isValid(int N, vector <int> C, string M)
{
map<int, int> c;
set< map<int, int> > vis;
for (int i = 0; i < C.size(); ++i) {
c[C[i]] = 0;
}
vis.insert(c);
for (int i = 0; i < M.size(); ++i) {
c[C[i]] += (M[i] == '+') ? +1 : -1;
if (vis.count(c)) return "NOT VALID";
vis.insert(c);
}
return "VALID";
}
};
0 件のコメント :
コメントを投稿