天天看點

leetcode 矩陣注水 python

用list模拟一個隊列就行

代碼如下:

class Solution:
    def waterInjection(self, matrix, R, C):#
        # Write your code here
        n=len(matrix)
        dx=[-1,0,0,1]
        dy=[0,1,-1,0]
        flag=0
        temp=Node(R,C,matrix[R][C])
        queue=[]
        queue.append(temp)
        while len(queue) != 0:
            print(len(queue))
            temp=queue[0]
            queue.pop(0)
            if temp.r==n-1 or temp.r==0 or temp.c==n-1 or temp.c==0:
                flag=1
                break
            for i in range(4):
                r=dy[i]+temp.r
                c=dx[i]+temp.c
                if matrix[r][c]<temp.h:
                    temp1=Node(r,c,matrix[r][c])
                    queue.append(temp1)
        if flag==0:
            return "NO"
        else:
            return "YES"



class Node:
    def __init__(self,r,c,h):
        self.r,self.c,self.h=r,c,h