推广网站是什么意思,wordpress邮件功能,北京海淀建设支行有哪些,wordpress菜单分开间隔Problem: 764. Largest Plus Sign 最大加号标志 解题过程 对每个格子#xff0c;计算左右上下的1的个数的最小值。队列会超时#xff0c;也就是广度优先搜索会超时 首先排序#xff0c;然后按行放入0的列索引#xff0c;按列放入0的行索引#xff0c;最后循环#xff0c;…Problem: 764. Largest Plus Sign 最大加号标志解题过程对每个格子计算左右上下的1的个数的最小值。队列会超时也就是广度优先搜索会超时首先排序然后按行放入0的列索引按列放入0的行索引最后循环计算left、right、up、down几个方向的1的个数拿最小值然后结果取最大值。左侧1的个数按行从后面开始访问若列索引j则break右侧1的个数按行从前面开始访问若列索引j则break初始化int leftj1, rightn-j, upi1, downn-i;若是直接数matrix的1个数会超时只能按行放入列索引按列放入行索引Codeclass Solution { public: // int dir[4][2] {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; bool status[250001]; int orderOfLargestPlusSign(int n, vectorvectorint mines) { // queuevectorint qe; // unordered_setint te; // memset(status, 0, sizeof(status)); // for(int i 0; i mines.size(); i) { // te.insert((mines[i][0] 20) mines[i][1]); // } sort(mines.begin(), mines.end(), [](vectorinta, vectorintc) { if(a[0]c[0]) return a[1] c[1]; else return a[0] c[0]; }); // vectorvectorbool matrix(n, vectorbool(n, true)); vectorvectorint row(501); vectorvectorint column(501); for(int i 0; i mines.size(); i) { // matrix[mines[i][0]][mines[i][1]] false; // te.insert(mines[i][0] * n mines[i][1]); row[mines[i][0]].push_back(mines[i][1]); column[mines[i][1]].push_back(mines[i][0]); status[mines[i][0] * n mines[i][1]] true; } int mx 0, key; for(int i 0; i n; i) { for(int j 0; j n; j) { // key i * n j; // if(matrix[i][j]) { // if(te.find(i * n j) te.end()) { if(status[i*nj]false) { int leftj1, rightn-j, upi1, downn-i; for(int k row[i].size()-1; k 0; k--) { // key i * n k; if(row[i][k] j) { left j - row[i][k]; break; } // if(matrix[i][k]false) break; // left; } for(int k 0; k row[i].size(); k) { // key i * n k; // if(matrix[i][k]false) break; // right; if(row[i][k] j) { right row[i][k] - j; break; } } for(int k column[j].size()-1; k 0; k--) { // key k * n j; // if(matrix[k][j]false) break; // up; if(column[j][k] i) { up i - column[j][k]; break; } } for(int k 0; k column[j].size(); k) { // key k * n j; // if(matrix[k][j]false) break; // down; if(column[j][k] i) { down column[j][k] - i; break; } } mx max(mx, min(left, min(right, min(up, down)))); } } } return mx; // for(int i 0; i n; i) { // for(int j 0; j n; j) { // key (i 20) j; // if(te.find(key)te.end()) { // num; // qe.push( { i, j, num, -1, 0} ); // qe.push( { i, j, num, 1, 0} ); // qe.push( { i, j, num, 0, -1} ); // qe.push( { i, j, num, 0, 1} ); // } // } // } // if(qe.size() 0) return 0; // int x, y, cnt 1; // unordered_setint tee; // while(!qe.empty()) { // int sz qe.size(); // bool add false; // unordered_mapint, int ump; // for(int i 0; i sz; i) { // vectorint pir qe.front(); // qe.pop(); // if(status[pir[2]]) { // continue; // } // x pir[0] pir[3]; // y pir[1] pir[4]; // key (x 20) y; // if(x 0 || y 0 || x n || y n || te.find(key)!te.end()) { // status[pir[2]] true; // continue; // } // qe.push({x, y, pir[2], pir[3], pir[4]}); // ump[pir[2]]; // } // bool find false; // for(auto [key, val] : ump) { // if(val4) { // find true; // break; // } // } // if(find false) { // return cnt; // } else { // cnt; // } // } // return cnt; } };