OJ练习第114题——T 秒后青蛙的位置

news2024/12/24 8:08:43

T 秒后青蛙的位置

力扣链接:1377. T 秒后青蛙的位置

题目描述

给你一棵由 n 个顶点组成的无向树,顶点编号从 1 到 n。青蛙从 顶点 1 开始起跳。规则如下:

在一秒内,青蛙从它所在的当前顶点跳到另一个 未访问 过的顶点(如果它们直接相连)。
青蛙无法跳回已经访问过的顶点。
如果青蛙可以跳到多个不同顶点,那么它跳到其中任意一个顶点上的机率都相同。
如果青蛙不能跳到任何未访问过的顶点上,那么它每次跳跃都会停留在原地。
无向树的边用数组 edges 描述,其中 edges[i] = [ai, bi] 意味着存在一条直接连通 ai 和 bi 两个顶点的边。

返回青蛙在 t 秒后位于目标顶点 target 上的概率。与实际答案相差不超过 10-5 的结果将被视为正确答案。

示例

在这里插入图片描述
输入:n = 7, edges = [[1,2],[1,3],[1,7],[2,4],[2,6],[3,5]], t = 2, target = 4
输出:0.16666666666666666
解释:上图显示了青蛙的跳跃路径。青蛙从顶点 1 起跳,第 1 秒 有 1/3 的概率跳到顶点 2 ,然后第 2 秒 有 1/2 的概率跳到顶点 4,因此青蛙在 2 秒后位于顶点 4 的概率是 1/3 * 1/2 = 1/6 = 0.16666666666666666 。

思路

首先根据edges求出树的邻接表,方便后续对图进行搜索,定义数组seen来记录已经遍历过的顶点。此外dfs的参数还包括当前遍历的定点序号,和剩余时间t.青蛙从顶点1开始进行搜索,初始剩余时间为t。
没遍历一个节点的时候,如果当前节点没有后续节点,或者剩余时间为0,就不能再继续搜索了。此时当前节点是target,返回概率1.0,否则返回0.0。如果有剩余时间不为0继续深度优先搜索,如果有子节点返回概率p>0,说行已经找到了节点target。

官方题解

public class Solution {
    public double frogPosition(int n, int[][] edges, int t, int target) {
        List<Integer>[] G = new ArrayList[n + 1];
        for (int i = 1; i <= n; ++i)
            G[i] = new ArrayList<>();
        for (int[] e : edges) {
            G[e[0]].add(e[1]);
            G[e[1]].add(e[0]);
        }
        boolean[] seen = new boolean[n + 1];
        return dfs(G, seen, 1, t, target);
    }

    private double dfs(List<Integer>[] G, boolean[] seen, int i, int t, int target) {
        int nxt = i == 1 ? G[i].size() : G[i].size() - 1;
        if (t == 0 || nxt == 0) {
            return i == target ? 1.0 : 0.0;
        }
        seen[i] = true;
        double ans = 0.0;
        for (int j : G[i]) {
            if (!seen[j]) {
                ans += dfs(G, seen, j, t - 1, target);
            }
        }
        return ans / nxt;
    }
}


来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/frog-position-after-t-seconds
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

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

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

相关文章

十、数据仓库详细介绍(数据质量)流程与工具

上篇我们主要介绍了以下三部分内容。 第一部分&#xff0c;介绍了五种常见的数据管理知识体系&#xff0c;数据质量在所有的知识体系中都有非常重要的地位&#xff0c;数据应用体现数据价值&#xff0c;数据质量为应用提供支撑。 第二部分&#xff0c;我们介绍了数据质量评判的…

程序优化 - ABAP并行处理

SAP的并行方式有很多种&#xff1a; SPTA框架&#xff0c;参考debug可以看出这个核心也是异步bgRFC 异步RFC&#xff0c;使用CALL FUNCTION “XXXXXX” STARTING NEW TASK XXXX CALLING XXXX ON END OF TASK BANK_PP_JOBCTRL框架 拆分成多个后台JOB执行 这里只说SPTA框架…

【高危】Linux Kernel OverlayFS 权限提升漏洞(POC公开)

漏洞描述 Linux Kernel OverlayFS 是 Linux 内核提供的一种文件系统&#xff0c;允许将多个文件系统合并为一个单一的虚拟文件系统。 在 Linux Kernel OverlayFS 受影响版本中&#xff0c;当用户将具备特权的文件从 nosuid 的挂载点复制到另一个挂载点时&#xff0c;未授权的…

【严重】ejs 存在服务端模板注入漏洞(存在POC)

漏洞描述 EJS 是开源的 JavaScript 模板引擎&#xff0c;允许在HTML代码中使用JavaScript代码块&#xff0c;closeDelimiter 参数是 EJS 模板中的结束标记&#xff0c;用于指定结束分隔符。 由于对 CVE-2022-29078 漏洞修复不完全&#xff0c;当应用程序使用 EJS 模板引擎&am…

如何恢复已删除或丢失的音乐文件

您是否遇到过您或其他人不小心删除了您的音乐文件的情况&#xff1f;作为我自己的音乐爱好者&#xff0c;我知道这种感觉有多么毁灭性。听音乐让我们平静和放松&#xff0c;它可以帮助一些人在工作时提高工作效率或缓解他们感受到的压力。 这就是为什么如果您不小心丢失了您心…

springcloud-alibaba (04)Gateway与Nacos结合使用

Gateway与Nacos结合使用 &#x1f389;欢迎来到这里&#xff0c;今天我将为大家介绍如何将Spring Cloud Gateway和Nacos结合使用&#xff0c;实现一个高效稳定的服务网关&#xff01;在微服务架构中&#xff0c;API网关是必不可少的一部分&#xff0c;它提供了路由请求、负载均…

java版企业工程项目管理系统源代码-功能清单 图文解析

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

新手如何写新闻稿?一文带你了解记者稿的写作步骤与技巧

作为一名新手记者&#xff0c;写稿件是必须掌握的基本技能。记者稿的写作方式有很多种&#xff0c;但基本的步骤和技巧是相同的。在这篇文章中&#xff0c;我将向大家介绍记者稿的写作步骤和技巧&#xff0c;希望能对想要成为一名优秀记者的你有所帮助。 一、确定新闻价值 在写…

代码随想录训练营Day50| 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV

目录 学习目标 学习内容 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV 学习目标 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV 学习内容 123.买卖股票的最佳时机III 123. 买卖股票的最佳时机 III - 力扣&#xff08;LeetCode&#xff09;https://lee…

深度分析:智能照明百亿赛道,Yeelight易来如何做到智能照明和定制照明双C位

日前&#xff0c;艾瑞咨询发布了《2023年中国家用智能照明行业研究报告》&#xff0c;报告显示&#xff0c;中国家用智能照明市场迎来爆发式增长&#xff0c;市场占有率从2016年仅2.0%上升到2022年的20.4%&#xff0c;7年间占比增长20%。预计2023年家用智能照明市场规模将突破1…

千呼万唤始出来!从源码到架构的Spring全系列笔记,已全部分享

因粉丝强烈要求小编整理一套spring全系列资料集合&#xff0c;不然就要集体给小编寄刀片了&#xff0c;今天终于是千呼万唤始出来&#xff0c;给大家连夜整理这一套可以说是全网最全最细的Spring全系列资料&#xff0c;今天毫无保留的给大家分享出来一起学习&#xff01;一起牛…

【JavaSE】Java基础语法(七):二维数组

文章目录 &#x1fa82;1. 二维数组概述&#x1fa82;2. 二维数组动态初始化&#x1fa82;3. 二维数组访问元素的细节问题&#x1fa82;4. 二维数组静态初始化&#x1fa82;5. 二维数组遍历&#x1fa82;6. 二维数组求和 &#x1fa82;1. 二维数组概述 概述 : 二维数组也是一种…

数据库范式理论

目录 1、1NF 2、2NF 3、3NF 4、BCNF 5、4NF 1、1NF 在实际应用中&#xff0c;数据库表的每一列&#xff08;也称为属性&#xff09;都是不可分割的原子数据项&#xff0c;不能是集合&#xff0c;数组&#xff0c;记录等非原子数据项。即在实际应用中实体中的某个属性有多个…

直播电商迈入新周期,快手如何抢跑?

文 | 螳螂观察 作者 | 图霖 直播电商迈入第七个发展年头&#xff0c;来到了新周期的变革前夜。 行业竞争逐年加剧&#xff0c;但截至2022年已迅速攀升至35000亿元的直播电商市场交易规模&#xff0c;仍诱惑着新玩家挤进这张拥堵的牌桌。 美团方面&#xff0c;继今年1月底在…

局域网唤醒工具UpSnap

什么是 UpSnap &#xff1f; UpSnap 是使用 SvelteKit、Go、PocketBase 和 nmap 编写的简单局域网唤醒应用程序。 v3 更新日志&#xff1a; ⚙️ 后端&#xff1a; 用 Go 重写。之前的版本是 Python 写的&#xff1b;不再支持不同的数据库。后端现在使用基于 SQLite 的 PocketB…

Qt+QtWebApp开发笔记(三):http服务器动态html连接跳转基础交互

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/130840894 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

电脑密码忘了怎么解除?试试这3个方法!

案例&#xff1a;我的电脑太久没有使用&#xff0c;导致我忘记了密码&#xff0c;试了好几次还是显示密码错误。怎样才能找回电脑的开机密码&#xff1f; 【我忘记了电脑密码&#xff0c;导致我无法使用电脑&#xff0c;给我的生活带来了很大的困扰。有没有小伙伴遇到过相同的…

开发最佳实践|集成声网 iOS SDK,实现语音聊天室

大家好&#xff0c;我是声网 RTE 开发者社区作者 小曾同学。本次主要分享集成声网SDK实现语音聊天室。 01 前言 在日常生活中经常会看到一些聊天场景&#xff0c;比如在线KTV、连麦开黑、多人相亲、娱乐聊天室等应用场景&#xff0c;随着移动应用开发的需求不断增加&#xff…

提高记忆力的 10 种记忆技巧和工具

人工智能的迅速发展&#xff0c;让人不禁猜想是否有一天我们也能靠AI来提高自己的记忆力&#xff1f;哈哈也许真的可行&#x1f916; 其实现在已经有很多记忆技巧和工具&#xff0c;不仅可以帮助我们存储信息&#xff0c;还可以更好地回忆和记忆更大的信息集。 实际上&#x…

lwIP更新记07:TCP 控制块申请失败可以检测到了

从 lwIP-2.0.0 开始&#xff0c;TCP 控制块申请失败可以检测到了。 这个更新应用在 TCP 服务器模式中&#xff0c;处于监听状态的 TCP_PCB &#xff0c;如果收到客户端发送的 SYN 同步标志&#xff0c;表示一个客户端在请求建立连接了。lwIP 会为这个新连接申请一个 TCP_PCB &…