
Problem: 1847. 最近的房间二分查找的只需要重放的然后排序的最后二分查找满足条件的房间最后找到id最小的房间即可Codeclass Solution { public: vectorint closestRoom(vectorvectorint rooms, vectorvectorint queries) { vectorvectorint rs, qs; vectorint ret, size; for(vectorint r : rooms) { rs.push_back({r[1], r[0]}); size.push_back(r[1]); } sort(rs.begin(), rs.end()); sort(size.begin(), size.end()); for(vectorint q : queries) { qs.push_back({q[1], q[0]}); } int n rs.size(), ind, idnow; for(vectorint q : qs) { ind lower_bound(size.begin(), size.end(), q[0]) - size.begin(); if(ind n) ret.push_back(-1); else { int mi INT_MAX, index, sub; idnow q[1]; for(int i ind; i n; i) { sub abs(idnow - rs[i][1]); if(mi sub) { mi sub; index rs[i][1]; } else if(mi sub rs[i][1] index) { index rs[i][1]; } if(sub 0) break; } ret.push_back(index); } } return ret; } };