intorangesRotting(vector<vector<int>>& grid){ queue<vector<int>> q; int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; // 方向数组,分别指向上下左右四个方向 int m=grid.size(),n=grid[0].size(),cnt=0,ans; // 已腐烂的橘子入队 for (int i=0;i<m;i++){ for (int j=0;j<n;j++){ if (grid[i][j]==2){ vector<int> a={i,j,0}; // (x坐标,y坐标,腐烂时间) q.push(a); } if (grid[i][j]==1) cnt++; //新鲜橘子个数 } } // 广度优先搜索 while (!q.empty()){ vector<int> a=q.front(); //出队 q.pop(); // 传染邻格的橘子 for (int i=0;i<4;i++){ int x=a[0]+dir[i][0],y=a[1]+dir[i][1]; if (x>=0&&x<m&&y>=0&&y<n&&grid[x][y]==1){ cnt--; //新鲜橘子减少 vector<int> temp={x,y,a[2]+1}; q.push(temp); // 刚腐烂的橘子入队 grid[x][y]=2; } } ans=q.front()[2]; //最后一个橘子出队前,ans将更新为其腐烂时间 } if (cnt==0) return ans; // 不存在新鲜橘子 elsereturn-1; }
然后出现了以下报错:
1
Line 1037: Char 9: runtime error: reference binding to misaligned address 0xbebebebebebebec6 for type 'int', which requires 4 byte alignment (stl_vector.h)