Leetcode - max-consecutive-ones
Heap - top buzz words

Leetcode - rotting-oranges

violet posted @ Feb 27, 2020 08:57:11 AM in 算法 with tags Algorithm BFS queue Queue Golang ruby , 387 阅读

https://leetcode.com/problems/rotting-oranges/

In a given grid, each cell can have one of three values:

  • the value 0 representing an empty cell;
  • the value 1 representing a fresh orange;
  • the value 2 representing a rotten orange.

Every minute, any fresh orange that is adjacent (4-directionally) to a rotten orange becomes rotten.

Return the minimum number of minutes that must elapse until no cell has a fresh orange.  If this is impossible, return -1 instead.

The solution is very simple by using BFS. Using a queue to store rotten oranges, iterating the queue and find fresh oranges around the rotten one, set fresh one to rotten and enqueue. After a round of rotting, pop previous round of rotten oranges.


func orangesRotting(grid [][]int) int {
    if len(grid) == 0 || len(grid[0]) == 0 {
        return -1
    }

    queue := [][]int{}
    for i := 0; i < len(grid); i++ {
        for j := 0; j < len(grid[i]); j++ {
            if grid[i][j] == 2 {
                queue = append(queue, []int{i, j})
            }
        }
    }
    count := 0
    for len(queue) != 0 {
        size := len(queue)
        for k := 0; k < size; k++ {
            i := queue[k][0]
            j := queue[k][1]
            if i > 0 && grid[i-1][j] == 1 {
                grid[i-1][j]++
                queue = append(queue, []int{i - 1, j})
            }
            if i < len(grid)-1 && grid[i+1][j] == 1 {
                grid[i+1][j]++
                queue = append(queue, []int{i + 1, j})
            }
            if j > 0 && grid[i][j-1] == 1 {
                grid[i][j-1]++
                queue = append(queue, []int{i, j - 1})
            }
            if j < len(grid[i])-1 && grid[i][j+1] == 1 {
                grid[i][j+1]++
                queue = append(queue, []int{i, j + 1})
            }
        }
        queue = queue[size:]
        if len(queue) == 0 {
            break
        }
        count++

    }

    for i := 0; i < len(grid); i++ {
        for j := 0; j < len(grid[i]); j++ {
            if grid[i][j] == 1 {
                return -1
            }
        }
    }

    return count
}
# @param {Integer[][]} grid
# @return {Integer}
def oranges_rotting(grid)
    return -1 if grid.length == 0 || grid[0].length == 0
    queue = []
    for i in 0..grid.length-1
        for j in 0..grid[0].length-1
            queue << [i, j] if grid[i][j] == 2
        end
    end
    directions = [[0, 1], [0, -1], [1, 0], [-1, 0]]
    count = 0
    while queue.length != 0
        size = queue.length
        for k in 0..size-1
            p = queue[k]
            x = p[0]
            y = p[1]
            directions.each do |d|
                new_x = x + d[0]
                new_y = y + d[1]
                if new_x >= 0 && new_y >= 0 && new_x < grid.length && new_y < grid[0].length && grid[new_x][new_y] == 1
                    queue << [new_x, new_y]
                    grid[new_x][new_y] = 2
                end
            end
        end
        queue = queue[size..-1]
        break if queue.length == 0
        count += 1
    end
    
    for i in 0..grid.length-1
        for j in 0..grid[0].length-1
            return -1 if grid[i][j] == 1
        end
    end
    
    return count
end
DPE Result dinajpur 说:
Aug 31, 2022 04:30:05 PM

Government of the People’s Republic of Bangladesh, Directorate of Primary Education (DPE), is going to announce PSC Result 2022 in student wide on 30th December 2022 for all divisional Grade 5 exam result with Ebtedayee Result 2022 for annual final terminal examinations, The Primary School Certificate Examination Result 2022 will be announced for both of General and Madhrsah students in division wise to all education board known as Prathomik Somaponi Result 2022. DPE Result dinajpurThe DPE has successfully conducted the class 5th grade PSC and Ebtedayee Examination tests from 17th to 24th November 2022 under all education boards of Dhaka, Chittagong, Comilla, Rajshahi, Sylhet, Barisal, Jessore, Dinajpur and Madrasah Board, and the DPE Grade-5 exams are successfully conducted at all 7,194 centers across the country.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter