linux HashMap CGLib动态代理 numpy reference insert xsd History.js 百度seo关键词 bootstrap框架 jquery去除空格 jquery延时 idea整理代码格式 matlab网页版 java二维数组赋值 mysql自然连接 python文件 python安装模块 java中正则表达式 java数组添加 java判断语句 java中tostring方法 java声明变量 java字符串操作 网页游戏代码 冬青鼠 主板排名天梯图 电视免费软件 视频字幕提取器 数据挖掘原理与算法 凯恩与林奇2下载 excel应用大全 怎么设置迅雷为默认下载器 摩尔斯电码翻译器在线 苹果手机总是自动重启 有线网卡驱动下载 jarsigner ppt格式刷怎么用 dnf风神加点 微信预约系统
当前位置: 首页 > 学习教程  > 编程语言

LeetCode(力扣)1706-球会落何处

2020/12/28 19:31:10 文章标签:

1706. 球会落何处 问题 用一个大小为 m x n 的二维网格 grid 表示一个箱子。你有 n 颗球。箱子的顶部和底部都是开着的。 箱子中的每个单元格都有一个对角线挡板,跨过单元格的两个角,可以将球导向左侧或者右侧。 将球导向右侧的挡板跨过左上角和右下…

1706. 球会落何处

问题

用一个大小为 m x n 的二维网格 grid 表示一个箱子。你有 n 颗球。箱子的顶部和底部都是开着的。

箱子中的每个单元格都有一个对角线挡板,跨过单元格的两个角,可以将球导向左侧或者右侧。

将球导向右侧的挡板跨过左上角和右下角,在网格中用 1 表示。
将球导向左侧的挡板跨过右上角和左下角,在网格中用 -1 表示。
在箱子每一列的顶端各放一颗球。每颗球都可能卡在箱子里或从底部掉出来。如果球恰好卡在两块挡板之间的 “V” 形图案,或者被一块挡导向到箱子的任意一侧边上,就会卡住。

返回一个大小为 n 的数组 answer ,其中 answer[i] 是球放在顶部的第 i 列后从底部掉出来的那一列对应的下标,如果球卡在盒子里,则返回 -1 。

**来源:**力扣(LeetCode)

链接:https://leetcode-cn.com/problems/where-will-the-ball-fall

示例 1:

输入:grid = [[1,1,1,-1,-1],[1,1,1,-1,-1],[-1,-1,-1,1,1],[1,1,1,1,-1],[-1,-1,-1,-1,-1]]
输出:[1,-1,-1,-1,-1]
解释:示例如图:
b0 球开始放在第 0 列上,最终从箱子底部第 1 列掉出。
b1 球开始放在第 1 列上,会卡在第 2、3 列和第 1 行之间的 "V" 形里。
b2 球开始放在第 2 列上,会卡在第 2、3 列和第 0 行之间的 "V" 形里。
b3 球开始放在第 3 列上,会卡在第 2、3 列和第 0 行之间的 "V" 形里。
b4 球开始放在第 4 列上,会卡在第 2、3 列和第 1 行之间的 "V" 形里。

示例 2:

输入:grid = [[-1]]
输出:[-1]
解释:球被卡在箱子左侧边上。

提示:

m == grid.length
n == grid[i].length
1 <= m, n <= 100
grid[i][j] 为 1 或 -1

解答

模拟

class Solution:
    def subFindeBall(self, ball: List[int], line: List[int]) -> List[int]: # 本函数只考虑单层的问题
        if len(ball) == 1: # 只有一个球 一定出不来
            return [-1]
        ans = [-1] * len(ball) # 结果初始化
        for idx, item in enumerate(ball):
            if item != -1:
                if line[item] == 1 and item < len(ball) - 1 and line[item + 1] == 1:  # 滚到右边
                    ans[idx] = item + 1
                elif line[item] == -1 and item > 0 and line[item - 1] == -1:  # 滚到左边
                    ans[idx] = item - 1
        return ans

    def findBall(self, grid: List[List[int]]) -> List[int]:
        ball = [x for x in range(len(grid[0]))]
        for i in range(len(grid)):
            ball = self.subFindeBall(ball, grid[i]) # 球从上一层出来,在往下一层滚
        return ball

本文链接: http://www.dtmao.cc/news_show_550276.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?