classSolution{public:vector<vector<int>>candyCrush(vector<vector<int>>&board){constintm=board.size();constintn=board[0].size();boolhaveCrushes=true;while(haveCrushes){haveCrushes=false;for(inti=0;i<m;++i)for(intj=0;j<n;++j){constintval=abs(board[i][j]);if(val==0)continue;// Crush vertical candiesif(j+2<n&&abs(board[i][j+1])==val&&abs(board[i][j+2])==val){haveCrushes=true;for(intk=j;k<j+3;++k)board[i][k]=-val;}// Crush horizontal candiesif(i+2<m&&abs(board[i+1][j])==val&&abs(board[i+2][j])==val){haveCrushes=true;for(intk=i;k<i+3;++k)board[k][j]=-val;}}if(haveCrushes){// For each column, drop candiesfor(intj=0;j<n;++j){intnextIndex=m-1;for(inti=m-1;i>=0;--i)if(board[i][j]>0)board[nextIndex--][j]=board[i][j];// Set board[0..nextIndex][j] to 0sfor(inti=nextIndex;i>=0;--i)board[i][j]=0;}}}returnboard;}};
classSolution{publicint[][]candyCrush(int[][]board){finalintm=board.length;finalintn=board[0].length;booleanhaveCrushes=true;while(haveCrushes){haveCrushes=false;for(inti=0;i<m;++i)for(intj=0;j<n;++j){finalintval=Math.abs(board[i][j]);if(val==0)continue;// Crush vertical candiesif(j+2<n&&Math.abs(board[i][j+1])==val&&Math.abs(board[i][j+2])==val){haveCrushes=true;for(intk=j;k<j+3;++k)board[i][k]=-val;}// Crush horizontal candiesif(i+2<m&&Math.abs(board[i+1][j])==val&&Math.abs(board[i+2][j])==val){haveCrushes=true;for(intk=i;k<i+3;++k)board[k][j]=-val;}}if(haveCrushes){// For each column, drop candiesfor(intj=0;j<n;++j){intnextIndex=m-1;for(inti=m-1;i>=0;--i)if(board[i][j]>0)board[nextIndex--][j]=board[i][j];// Set board[0..nextIndex][j] to 0sfor(inti=nextIndex;i>=0;--i)board[i][j]=0;}}}returnboard;}}