LeetCode:1706. 球会落何处(Java 模拟)

news2024/10/5 17:17:54

目录

1706. 球会落何处

题目描述:

实现代码与解析:

原理思路:


1706. 球会落何处

题目描述:

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

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

  • 将球导向右侧的挡板跨过左上角和右下角,在网格中用 1 表示。
  • 将球导向左侧的挡板跨过右上角和左下角,在网格中用 -1 表示。

在箱子每一列的顶端各放一颗球。每颗球都可能卡在箱子里或从底部掉出来。如果球恰好卡在两块挡板之间的 "V" 形图案,或者被一块挡导向到箱子的任意一侧边上,就会卡住。

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

示例 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]
解释:球被卡在箱子左侧边上。

示例 3:

输入: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]]
输出:[0,1,2,3,4,-1]

提示:

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

实现代码与解析:

模拟

class Solution {
    public int[] findBall(int[][] grid) {
        
        int n = grid.length;
        int m = grid[0].length;
        int [] res = new int[m];

        for (int k = 0; k < m; k++) {
            int cur = k; // 列
            for (int i = 0; i < n; i++) { // 层
                int f = grid[i][cur];
                if ((f == 1 && cur + 1 > m - 1) || (f == 1 && grid[i][cur + 1] != 1)) {
                    res[k] = -1;
                    break;
                } else if ((f == -1 && cur - 1 < 0) || (f == -1 && grid[i][cur - 1] != -1)) {
                    res[k] = -1;
                    break;
                } else {
                    cur += f;
                    res[k] = cur;
                }
            }
            
        }

        return res;
    }
}

原理思路:

  • 将球导向右侧的挡板跨过左上角和右下角,在网格中用 1 表示。
  • 将球导向左侧的挡板跨过右上角和左下角,在网格中用 -1 表示。

        模拟小球掉落,若当前位置挡板为1,其右侧挡板也唯1,才能向右下走,

        若其位置挡板为-1,其左侧挡板也为-1,才能向左下走。

注意边界,然后模拟即可。 

        他这个挡板是1和-1表示,与cur相加正好是下一个位置。 

        我取res数组结果是一直更新直到最后一个,其实可以加个判断,在最后一层才取当前位置为结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1412418.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据中台的护城河,基于Flink实时构建数据仓

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验&#xff01;希望我的分享能帮助到您&#xff01;如需帮助可以评论关注私信我们一起探讨&#xff01;致敬感谢感恩&#xff01; 数据中台的护城河&#xff1a;基于Flink实时构建数据仓 在数字化时代&#xff0c;数据…

leetcode hot100 全排列

在本题中&#xff0c;是要求我们求一个不重复数组的全排列&#xff0c;那么全排列&#xff0c;一定是长度和数组长度一致的&#xff0c;并且&#xff0c;排列问题是有顺序的&#xff0c;即1&#xff0c;2&#xff0c;3和1&#xff0c;3&#xff0c;2是两个不同的排列。 那么&a…

(数据结构练习题)合并两个有序数组

&#x1f308;前言&#xff1a;在刷题过程中发现超精简的代码。 力扣链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 &#x1f4ab;正文 首先这是题目内容&#xff0c;大家看到这个题时肯定会有很多不同的做法比如遍历链表将两个链表…

如何使用react框架进行两个html页面的切换?

如何使用react框架进行两个html页面的切换? 项目背景首先是古老的做法login.htmlindex.html 正文->react框架如何设置两个页面的跳转?配置react框架的环境react框架如何实现两个页面的跳转? 项目背景 古老的html页面跳转的做法无法在react框架中直接适配,所以非常有必要…

Redis 实际项目中的整合,记录各种用法

Redis缓存餐厅数据 我们来看主要的流程 很简单,就是在数据库和接口之间加了一层缓冲,在redis之前其实还可以加其他的缓存 例如 nginx的缓存 接下来,就是结合我的业务,来做缓存 我这里的业务逻辑是,按了分类的按钮,分别以不同的 分类为一组缓存数据 所以,这里的缓存粒度是分类…

【JSON2WEB】02 JSON2WEB初步UI设计

JSON2WEB的UI初步设计&#xff0c;包括草图、登录、主页、导航树JSON2TREEE组件、表格JSON2GRID组件、表单JSON2FORM组件等。 1草图 表单作为抽屉从右边拉出。LOGO行和导航树为固定区域&#xff0c;导航树可以折叠。 2 登录页 找回账号&#xff1a;可以给邮箱&#xff08;找…

【Linux install】详细的Ubuntu和win双系统安装指南

文章目录 1.前期准备1.1 制作启动盘1.2关闭快速启动、安全启动、bitlocker1.2.1 原因1.2.2 进入BIOSshell命令行进入BIOSwindows设置中高级启动在开机时狂按某个键进入BIOS 1.2.3 关闭Fast boot和Secure boot 1.3 划分磁盘空间1.3.1 查看目前的虚拟内存大小 2.开始安装2.1 使用…

微信小程序(十五)自定义导航栏

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.组件文件夹创建方法 2.自定义组件的配置方法 3.外部修改组件样式&#xff08;关闭样式隔离或传参&#xff09; 创建组件文件夹 如果是手动创建建议注意在json文件声明&#xff1a; mynav.json {//声明为组件可…

git安装步骤

安装环境&#xff1a;Windows10 64bit 下载 Git网址 &#xff1a;Git - Downloading Package 版本&#xff1a;Git-2.21.0-64-bit 第一步&#xff1a;双击下载后的Git-2.21.0-64-bit.exe&#xff0c;开始安装 安装开始 第二步&#xff1a;选择安装路径&#xff0c;点击[next]…

8-小程序数据promise化、共享、分包

小程序API Promise化 wx.requet 官网入口 默认情况下&#xff0c;小程序官方异步API都是基于回调函数实现的 wx.request({method: , url: , data: {},header: {content-type: application/json // 默认值},success (res) {console.log(res.data)},fail () {},complete () { }…

CentOS7服务器的安装配置连接客户端Xshell进行使用

目录 一. CentOS7的安装【在虚拟机中】 二. 查看设置IP地址 三. 安装并连接客户端软件Xshell 3.1 安装Xshell 3.2 xshell连接centos7服务器 四. 切换国内源 一. CentOS7的安装【在虚拟机中】 首先创建一个虚拟机&#xff0c; 这个没什么好说的&#xff0c;基本上都是下…

Sketch怎么增加组件?

Sketch怎么增加组件&#xff1f;Sketch组件库经常使用&#xff0c;想要添加一些新的组件&#xff0c;该怎么添加呢&#xff1f;下面我们就来看看Sketch组件库添加新组建的技巧&#xff0c;详细请看下文介绍 打开电脑&#xff0c;找到sketch软件的图标&#xff0c;点击进入 新建…

【GitHub项目推荐--React 组件库】【转载】

这个 9.9k Star 的开源项目是一个 React 组件库帮助你更快速的构建 Web 应用&#xff0c;包含 120 可定制组件和 Hook&#xff0c;支持暗黑主题。 开源地址&#xff1a;https://github.com/mantinedev/mantine

25考研每日的时间安排

今天要给大家分享一下25考研每日的时间安排。 没有完美的计划&#xff0c;只有合适的计划。 仅供参考 很多人说复习不要只看时长而是要看效率&#xff0c;所以学多长时间不重要&#xff0c;重要的高效率完成任务。 完美的计划 这个计划看起来很完美&#xff0c;从早到晚有学习…

前端优化之代码压缩gzip

这里的代码压缩不是指的vite当中的build.minify的那个选项&#xff0c;而是指的是gzip这样的压缩方式。前者指的是格式上的压缩&#xff0c;也就是把src代码之中的空格、格式之类的全部去除掉。后者指的则是服务器对代码的一种压缩方式。 一、简要说一说服务器端对代码的压缩 …

使用Go语言编写自定义的HTTP代理:探险网络奇幻之旅

你是否曾经想过自己也能编写一个代理服务器&#xff0c;掌握网络冲浪的主动权&#xff1f;现在&#xff0c;有了Go语言&#xff0c;这个梦想不再遥不可及&#xff01;让我们一起踏上这段探险之旅&#xff0c;用Go语言编写一个自定义的HTTP代理&#xff0c;开启网络奇幻之旅&…

两个角度解决msvcr120.dll丢失的问题,修复msvcr120.dll丢失

msvcr120.dll 是 Microsoft Visual Studio 2013 的一部分&#xff0c;它属于 Visual C Redistributable Packages 的一个组件。在使用电脑的过程中是否遇到过msvcr120.dll 丢失的情况&#xff0c;约到这样的问题&#xff0c;大家是怎么解决的&#xff1f;今天教大家从两个角度去…

【操作系统】实验九 写一个设备驱动程序

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

etcd未授权到控制k8s集群

在安装完 K8s 后&#xff0c;默认会安装 etcd 组件&#xff0c;etcd 是一个高可用的 key-value 数据库&#xff0c;它为 k8s 集群提供底层数据存储&#xff0c;保存了整个集群的状态。大多数情形下&#xff0c;数据库中的内容没有加密&#xff0c;因此如果黑客拿下 etcd&#x…

数字地球开放平台农作物长势监测解决方案

数字地球开放平台农作物长势监测解决方案 利用遥感技术进行产量预测是一种高效而准确的方法&#xff0c;通过监测植被的生长状况、土地利用、气象等因素&#xff0c;可以为农业决策提供有力支持。数字地球开放平台拥有200颗卫星&#xff0c;为您提供一站式卫星遥感服务。 农情监…