Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. class Solution {
  2. public:
  3.  
  4. int setNeighbors(vector<vector<int>>& grid, int x, int y){
  5. // set neighbors to 3 to trigger change
  6. if (x-1 >= 0 && grid[x-1][y] == 1]){
  7. grid[x-1][y] = 3;
  8. }
  9. if (x+1 < grid.size() && grid[x+1][y] == 1){
  10. grid[x+1][y] = 3;
  11. }
  12. if (y-1 >= 0 && grid[x][y-1] == 1){
  13. grid[x][y-1] = 3;
  14. }
  15. if (y+1 < grid[0].size() && grid[x][y+1] == 1){
  16. grid[x][y+1] = 3;
  17. }
  18. }
  19.  
  20. int orangesRotting(vector<vector<int>>& grid) {
  21. int minute = 0;
  22. bool allRotten = false;
  23.  
  24. while (!allRotten){
  25. // check if all are rotten
  26. int fresh = 0;
  27.  
  28. for (int i=0; i<grid.size(); i++){
  29. for (int j=0; j<grid[0].size(); j++){
  30. if (grid[i][j] == 1){
  31. fresh++;
  32. }
  33. }
  34. }
  35.  
  36. if (fresh == 0){
  37. allRotten = true;
  38. break;
  39. }
  40.  
  41. // make neighbours rotten from 3
  42. int changes = 0;
  43. for (int i=0; i<grid.size(); i++){
  44. for (int j=0; j<grid[0].size(); j++){
  45. if (grid[i][j] == 3){
  46. grid[i][j] = 2;
  47. changes++;
  48. }
  49. }
  50. }
  51.  
  52. /* if nothing changes on the board and some fresh still remaining
  53. return impossible */
  54. if (changes == 0 && fresh > 0){
  55. return -1;
  56. }
  57.  
  58. minute++;
  59. }
  60.  
  61. return minute;
  62. }
  63. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement