zoukankan      html  css  js  c++  java
  • 边工作边刷题:70天一遍leetcode: day 97

    Bomb Enemy

    要点:

    • 什么题?目标是合适的地方摆1个炸弹优化最大攻击怪物数,
      • 为什么这个目标和横竖统计有关(内在关联是什么?):炸弹的特性:分段,某个点和某段内的前后方向都有关联。所以统计段内怪物数
      • 处理的方向是逐行遍历matrix,所以”预处理"可以同时进行:在某段的左边界做,之后其他同段点可以共享。边界条件即初始i==0 or i-1为障碍,终止i为右边界 or i+1为障碍
    • (optional) http://pastebin.com/1MudDima google走迷宫(进一步理解)
      • 类似题,但是要分开预处理neighbors:因为不是逐行扫描做选择,而是路径根据初始点四个方向做dfs

    https://repl.it/C9uI/2

    class Solution(object):
        def maxKilledEnemies(self, grid):
            """
            :type grid: List[List[str]]
            :rtype: int
            """
            m=len(grid)
            if m==0: return 0
            n=len(grid[0])
            rowcount, colcounts= 0, [0]*n
            maxCount = 0
            for i in xrange(m):
                for j in xrange(n):
                    if j==0 or grid[i][j-1]=='W':
                        rowcount, k = 0, j
                        while k<n and grid[i][k]!='W':
                            rowcount+=(grid[i][k]=='E')
                            k+=1
                        
                    if i==0 or grid[i-1][j]=='W':
                        colcounts[j], k = 0, i
                        while k<m and grid[k][j]!='W':
                            colcounts[j]+=(grid[k][j]=='E')
                            k+=1
    
                    if grid[i][j]=='0':
                        maxCount = max(maxCount, rowcount+colcounts[j])
                
            return maxCount
    
    sol = Solution()
    assert sol.maxKilledEnemies(["0E00","E0WE","0E00"])==3, "max killed is 3"
    
    
  • 相关阅读:
    markdown的学习
    python面向对象-我的理解
    SQL的学习
    Mycil命令行MySQL语法高亮和自动补全工具
    命令行启动MySQL
    JavaWeb项目(SSM)准备工作
    Java一些七七八八的配置
    Win10-64位 免安装版Mysql8下载安装运行
    为什么要进行URL编码
    JavaWeb项目中文乱码问题
  • 原文地址:https://www.cnblogs.com/absolute/p/5815925.html
Copyright © 2011-2022 走看看