• 999. Available Captures for Rook


    class Solution:
        def calcu(self,ele:List[str],loc):
            index_p = [-1]*2 #只记录离R最近位置的p和B(左右)
            index_B = [-1]*2
            left,right = 0,0
            for i in range(len(ele)):
                if ele[i] is 'p':
                    if i < loc:
                        index_p[0]=i #左边的取最大值
                    else:
                        if index_p[1]<0:index_p[1] = i #右边的取最小值
                elif ele[i] is 'B':
                    if i<loc:
                        index_B[0]=i
                    else:
                        if index_B[1]<0:index_B[1]=i
                        
            p0,p1,b0,b1 = index_p[0],index_p[1],index_B[0],index_B[1] #使用简便的符号标记,方便书写
            if p0>=0:#p在R的左边
                if b0>=0: #B在R的左边,有值
                    if p0<loc and b0<p0:
                        left = 1
                else: #B左边没有值
                    if p0<loc:
                        left = 1
            if p1>=0:#p在R的右边
                if b1>=0:#B在R的右边,有值
                    if p1>loc and b1>p1:
                        right = 1
                else:#B右边没有值
                    if p1>loc:
                        right = 1
                    
            return left,right
                    
        def numRookCaptures(self, board: List[List[str]]) -> int:
            index_R_row = 0 
            index_R_col = 0
            count = 0
            col = []
            row = []
            for a in board:
                index_R_row += 1
                if 'R' in a:
                    for i in range(len(a)):
                        if a[i]=='R':
                            index_R_col = i
                            col = [x[i] for x in board]
                            row = a
                            break
                    break
                    
            
            r1,r2 = self.calcu(row,index_R_col)
            r3,r4 = self.calcu(col,index_R_row-1)
            count = r1+r2+r3+r4
            return count
    

      40ms,13M

    my god,写这个代码花了我半天时间,估计以后都不想看第二遍了。。。。。

  • 相关阅读:
    MySql
    027 mysql
    navicat
    基于阿里云资源的分布式部署方案
    translate(50%,50%) 实现水平垂直居中
    SSH2 协议详解
    DNS服务配置篇 巴哥学Server2003
    Java 8 后的新功能梳理
    IBM Cognos BI 最佳实践系列 网站地址
    jsf2.0 入门视频 教程
  • 原文地址:https://www.cnblogs.com/accumulationbystep/p/10443694.html
Copyright © 2020-2023  润新知