当前位置: 首页 > news >正文

LeetCode 热题 100_腐烂的橘子(52_994_中等_C++)(图;广度优先遍历(队列))

LeetCode 热题 100_腐烂的橘子(52_994)

    • 题目描述:
    • 输入输出样例:
    • 题解:
      • 解题思路:
        • 思路一(广度优先遍历(队列)):
      • 代码实现
        • 代码实现(思路一(广度优先遍历(队列))):
        • 以思路一为例进行调试
        • 部分代码解读

题目描述:

在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一:

值 0 代表空单元格;
值 1 代表新鲜橘子;
值 2 代表腐烂的橘子。

每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。

返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1 。

输入输出样例:

示例 1:
在这里插入图片描述

输入:grid = [[2,1,1],[1,1,0],[0,1,1]]
输出:4

示例 2:
输入:grid = [[2,1,1],[0,1,1],[1,0,1]]
输出:-1
解释:左下角的橘子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个方向上。

示例 3:
输入:grid = [[0,2]]
输出:0
解释:因为 0 分钟时已经没有新鲜橘子了,所以答案就是 0 。

提示:
m== grid.length
n == grid[i].length
1 <= m, n <= 10
grid[i][j] 仅为 0、1 或 2

题解:

解题思路:

思路一(广度优先遍历(队列)):

1、从柿子腐烂的过程,可以容易的想到腐烂是从坏柿子为中心开始一圈一圈向外进行蔓延。每个柿子为一个腐烂的中心,同时进行腐烂。容易想到每个腐烂的橘子为中心同时进行广度优先遍历,将好柿子变为坏柿子。

2、具体思路如下:
① 一开始遍历整个网格,将所有腐烂的柿子入队(并统计好柿子的数量,如果好柿子的数量为0则返回时间0)。

② 统计此时队列中腐烂柿子的数量n0。
③ 将n0个腐烂柿子出队,并将其上下左右好柿子入队,入队时将其变为腐烂的柿子。
④ 此时将时间(time)+1,并更新剩余好柿子数量(好柿子-新腐烂的柿子)。

⑤ 统计此时队列中腐烂柿子的数量n1。
⑥ 将n1个腐烂柿子出队,并将其上下左右好柿子入队,入队时将其变为腐烂的柿子。
⑦ 此时将时间(time)+1,并更新剩余好柿子数量(好柿子-新腐烂的柿子)。



重复上述过程,直至队列为空为止。
⑧ 如果好柿子的数量>0,则输出-1。如果好柿子的数量=0,则输出时间(time)。

3、复杂度分析:
① 时间复杂度:O(mn),其中 n,m 分别为 grid 的行数与列数,先对网格的坏橘子入队,统计好橘子的数量O(mn)。再进行一次广度优先搜索的时间O(mn)。
② 空间复杂度:O(m+n),主要取决于栈的深度,最坏情况为m=n时,中心的一个为坏橘子,栈中元素最多为最外层的数量(2m+2n)。

代码实现

代码实现(思路一(广度优先遍历(队列))):
int orangesRotting(vector<vector<int>>& grid) {//网格的行和列int r_size=grid.size(),c_size=grid[0].size();//好柿子的数量int nums_goodOrange=0;//最小分钟数int time=0;//存放腐烂句子的队列queue<pair<int,int>> Q;//遍历网格统计好橘子的数量,并将坏橘子入队(进行后续的广度优先遍历)for (int r = 0; r < r_size; r++){for (int c = 0; c < c_size; c++){//坏柿子入队if (grid[r][c]==2){Q.push({r,c});//统计好柿子数量}else if(grid[r][c]==1){nums_goodOrange+=1;}}}//如果好橘子的数量为0则之间返回0if (nums_goodOrange==0) return 0;//注意我们队列中一开始会存储坏橘子的数量,所以我们在这里加上,便于我们后续统计好橘子转换为坏橘子的数量nums_goodOrange+=Q.size();while (!Q.empty()){//“一层”坏橘子的数量int n=Q.size();//将n0个腐烂柿子出队,并将其上下左右好柿子入队,入队时将其变为腐烂的柿子//此时将时间(time)+1,并更新剩余好柿子数量(好柿子-新腐烂的柿子)。for (int i = 0; i < n; i++){auto rc= Q.front();Q.pop();int r=rc.first,c=rc.second;//处理坏柿子紧挨着上下左右的好柿子if (r-1>=0 && grid[r-1][c]==1){grid[r-1][c]=2;Q.push({r-1,c});}if (r+1<r_size && grid[r+1][c]==1){grid[r+1][c]=2;Q.push({r+1,c});}if (c-1>=0 && grid[r][c-1]==1){grid[r][c-1]=2;Q.push({r,c-1});}if (c+1<c_size && grid[r][c+1]==1){grid[r][c+1]=2;Q.push({r,c+1});}}//新腐烂一层柿子后time+1,更新好柿子的数量++time;nums_goodOrange-=n;}if (nums_goodOrange>0){return -1;}//注意一开始我们统计了一次,最开始就是腐烂的坏柿子,所以要减去return time-1;
}
以思路一为例进行调试
#include<iostream>
#include <vector>
#include<queue>
using namespace std;class Solution {
public:int orangesRotting(vector<vector<int>>& grid) {//网格的行和列int r_size=grid.size(),c_size=grid[0].size();//好柿子的数量int nums_goodOrange=0;//最小分钟数int time=0;//存放腐烂句子的队列queue<pair<int,int>> Q;//遍历网格统计好橘子的数量,并将坏橘子入队(进行后续的广度优先遍历)for (int r = 0; r < r_size; r++){for (int c = 0; c < c_size; c++){//坏柿子入队if (grid[r][c]==2){Q.push({r,c});//统计好柿子数量}else if(grid[r][c]==1){nums_goodOrange+=1;}}}//如果好橘子的数量为0则之间返回0if (nums_goodOrange==0) return 0;//注意我们队列中一开始会存储坏橘子的数量,所以我们在这里加上,便于我们后续统计好橘子转换为坏橘子的数量nums_goodOrange+=Q.size();while (!Q.empty()){//“一层”坏橘子的数量int n=Q.size();//将n0个腐烂柿子出队,并将其上下左右好柿子入队,入队时将其变为腐烂的柿子//此时将时间(time)+1,并更新剩余好柿子数量(好柿子-新腐烂的柿子)。for (int i = 0; i < n; i++){auto rc= Q.front();Q.pop();int r=rc.first,c=rc.second;//处理坏柿子紧挨着上下左右的好柿子if (r-1>=0 && grid[r-1][c]==1){grid[r-1][c]=2;Q.push({r-1,c});}if (r+1<r_size && grid[r+1][c]==1){grid[r+1][c]=2;Q.push({r+1,c});}if (c-1>=0 && grid[r][c-1]==1){grid[r][c-1]=2;Q.push({r,c-1});}if (c+1<c_size && grid[r][c+1]==1){grid[r][c+1]=2;Q.push({r,c+1});}}//新腐烂一层柿子后time+1,更新好柿子的数量++time;nums_goodOrange-=n;}if (nums_goodOrange>0){return -1;}//注意一开始我们统计了一次,最开始就是腐烂的坏柿子,所以要减去return time-1;}
};int main(int argc, char const *argv[])
{vector<vector<int>> grid={{2,1,1},{0,1,1},{1,0,1}};//统计腐烂柿子的数量并输出Solution s;cout<<s.orangesRotting(grid);return 0;
}
部分代码解读

pair<int,int>的解读请点击此链接:(LeetCode 热题 100_岛屿数量(51_200_中等_C++)(图;深度优先遍历;广度优先搜索)(pair<int,int>)

LeetCode 热题 100_腐烂的橘子(52_994)原题链接
欢迎大家和我沟通交流(✿◠‿◠)

相关文章:

LeetCode 热题 100_腐烂的橘子(52_994_中等_C++)(图;广度优先遍历(队列))

LeetCode 热题 100_腐烂的橘子&#xff08;52_994&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;广度优先遍历&#xff08;队列&#xff09;&#xff09;&#xff1a; 代码实现代码实现&#xff08;思路一…...

【数学】概率论与数理统计(五)

文章目录 [toc] 二维随机向量及其分布随机向量离散型随机向量的概率分布律性质示例问题解答 连续型随机向量的概率密度函数随机向量的分布函数性质连续型随机向量均匀分布 边缘分布边缘概率分布律边缘概率密度函数二维正态分布示例问题解答 边缘分布函数 二维随机向量及其分布 …...

《AI模型格局演变:Claude、Gemini Flash与OpenAI的技术角力》

Anthropic的Claude模型在通用聊天模型中表现优异&#xff0c;但在市场份额上仍落后于OpenAI Anthropic的Claude模型在通用聊天模型中的表现优异&#xff0c;主要体现在以下几个方面&#xff1a; 1. 技术优势 性能表现: Claude模型在处理复杂任务&#xff08;如编程、自然语言…...

[0405].第05节:搭建Redis主从架构

Redis学习大纲 一、3主3从的集群配置&#xff1a; 1.1.集群规划 1.分片集群需要的节点数量较多&#xff0c;这里我们搭建一个最小的分片集群&#xff0c;包含3个master节点&#xff0c;每个master包含一个slave节点&#xff0c;结构如下&#xff1a; 2.每组是一主一从&#x…...

01、kafka知识点综合

kafka是一个优秀大吞吐消息队列&#xff0c;下面我就从实用的角度来讲讲kafka中&#xff0c;“kafka为何有大吞吐的机制”&#xff0c;“数据不丢失问题”&#xff0c;“精准一次消费问题” 01、kafka的架构组织和运行原理 kafka集群各个节点的名称叫broker&#xff0c;因为kaf…...

K8S集群常用命令

1&#xff0c;查看pod kubectl get pods -A 查看所有的pod kubectl get pods 这个只查看namespace为default下的pod&#xff0c;也就是只查看默认命名空间下的pod kubectl get pod -A -o wide 查看所有的pod&#xff0c;并且放出的信息更全&#xff08;包含了pod的ip&#xff0…...

数据集-目标检测系列- 石榴 检测数据集 pomegranate >> DataBall

数据集-目标检测系列- 石榴 检测数据集 pomegranate >> DataBall DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(fre…...

【ubuntu24.04】配置ssh以root登录

ubuntu默认不能以root登录 SSH 访问 Ubuntu 时,root 用户登录提示 Access denied 的问题,通常是因为 Ubuntu 默认禁用了 root 用户通过 SSH 登录。这是出于安全性考虑的默认配置。原因分析 默认禁用 root 登录: 在 /etc/ssh/sshd_config 配置文件中,PermitRootLogin 默认…...

python学opencv|读取图像(二十九)使用cv2.getRotationMatrix2D()函数旋转缩放图像

【1】引言 前序已经学习了如何平移图像&#xff0c;相关文章链接为&#xff1a; python学opencv|读取图像&#xff08;二十七&#xff09;使用cv2.warpAffine&#xff08;&#xff09;函数平移图像-CSDN博客 在此基础上&#xff0c;我们尝试旋转图像的同时缩放图像。 【2】…...

Python语言的编程范式

Python语言的编程范式探讨 引言 在当今的编程世界中&#xff0c;Python语言以其简洁、易读和强大的功能深受开发者的喜爱。作为一种多范式编程语言&#xff0c;Python支持多种编程风格&#xff0c;包括面向对象编程&#xff08;OOP&#xff09;、函数式编程和命令式编程等。每…...

JAVA多线程学习

文章目录 线程相关概念线程创建继承Thread类Runnable接口多个线程同时操作同一个对象测试&#xff1a;实现callable接口(了解)静态代理lamda表达式 线程状态线程停止线程休眠线程礼让 线程相关概念 线程&#xff1a;是进程的一部分&#xff0c;一个进程之内的线程之间共享进程的…...

【c语言】指针 (完结)

一、sizeof和strlen的对比 1、sizeof 前面我们在学习操作符的时候&#xff0c;我们学习了sizeof&#xff0c;知道其是计算变量所占内存的大小的&#xff0c;单 位是字节&#xff0c;如果操作数是数据类型的话&#xff0c;计算的就是这个类型的变量所占的内存空间的大…...

vue使用自动化导入api插件unplugin-auto-import,避免频繁手动导入

‌unplugin-auto-import‌是一个现代的自动导入插件&#xff0c;旨在简化前端开发中的导入过程&#xff0c;减少手动导入的繁琐工作&#xff0c;提升开发效率。它支持多种构建工具&#xff0c;包括Vite、Webpack、Rollup和esbuild&#xff0c;并且可以与TypeScript配合使用&…...

matlab函数讲解——randsample

在MATLAB中&#xff0c;randsample函数用于从一个给定的集合中随机选择样本。函数的基本用法是从指定范围内随机选择元素&#xff0c;具体用法如下&#xff1a; 用法 y randsample(n, k, true, w)参数说明 n: 整数&#xff0c;表示从1到n的集合中进行抽样。例如&#xff0c;…...

50_Lua垃圾回收

1.Lua垃圾回收机制概述 Lua采用了一种自动内存管理机制,称为垃圾回收(Garbage Collection, GC)。垃圾回收的主要目的是回收程序中不再被使用的内存,从而避免内存泄漏。Lua的垃圾回收器负责回收动态分配的对象,如函数、用户数据、表、字符串、线程、内部结构等。Lua的垃圾…...

【Python】数据容器:列表,元组,字符串,集合字典及通用操作

文章目录 一.序列1.1list列表定义常用操作列表的遍历 1.2tuple元组定义常见操作元组的遍历 1.3str字符串定义常见操作字符串的遍历 1.4序列常用操作——切片 二.set集合定义常见操作集合的遍历 三.dict字典定义常用操作字典的嵌套 *数据容器对比总结四.数据容器的通用操作4.1通…...

Wi-Fi Direct (P2P)原理及功能介绍

目录 Wi-Fi Direct &#xff08;P2P&#xff09;介绍Wi-Fi Direct P2P 概述P2P-GO&#xff08;P2P Group Owner&#xff09;工作流程 wifi-Direct使用windows11 wifi-directOpenwrtwifi的concurrent mode Linux环境下的配置工具必联wifi芯片P2P支持REF Wi-Fi Direct &#xff…...

系统看门狗配置--以ubuntu为例

linux系统配置看门狗 以 ubuntu 系统配置看门狗为例 配置看门狗使用的脚本文件&#xff0c;需要使用管理员权限来执行&#xff1a; 配置是&#xff1a;系统每 30S 喂一次狗&#xff0c;超过 60S 不进行投喂&#xff0c;就会自动重启。 1. 系统脚本内容&#xff1a; #!/bin/b…...

Mysql--基础篇--多表查询(JOIN,笛卡尔积)

在MySQL中&#xff0c;多表查询&#xff08;也称为联表查询或JOIN操作&#xff09;是数据库操作中非常常见的需求。通过多表查询&#xff0c;你可以从多个表中获取相关数据&#xff0c;并根据一定的条件将它们组合在一起。MySQL支持多种类型的JOIN操作&#xff0c;每种JOIN都有…...

44_Lua迭代器

在Lua中,迭代器是一种用于遍历集合元素的重要工具。掌握迭代器的使用方法,对于提高Lua编程的效率和代码的可读性具有重要意义。 1.迭代器概述 1.1 迭代器介绍 迭代器是一种设计模式,它提供了一种访问集合元素的方法,而不需要暴露其底层结构。在Lua中,迭代器通常以一个函…...

网络原理(三)—— 传输层 之 UDP 和 TCP协议

传输层 在传输层两大关键的协议就是UDP和TCP协议了&#xff0c;除此之外&#xff0c;还有别的传输层协议&#xff0c;本文章将介绍UDP和TCP协议&#xff0c;重点介绍TCP协议。 首先回顾TCP和UDP 的特点&#xff1a; UDP&#xff1a;不可靠传输&#xff0c;面向数据包&#xf…...

Swin Transformer模型详解(附pytorch实现)

写在前面 Swin Transformer&#xff08;Shifted Window Transformer&#xff09;是一种新颖的视觉Transformer模型&#xff0c;在2021年由微软亚洲研究院提出。这一模型提出了一种基于局部窗口的自注意力机制&#xff0c;显著改善了Vision Transformer&#xff08;ViT&#xf…...

opencv进行人脸识别环境搭建

1. 构建人脸识别环境 1) 下载安装opencv 下载地址&#xff1a;Releases - OpenCV 参考博文&#xff1a;OpenCV下载安装教程&#xff08;Windows&#xff09;-CSDN博客 下载对应系统的opencv&#xff0c;如windows版&#xff0c;opencv-4.5.5-vc14_vc15.exe 2) 然后解压缩到…...

java小灶课详解:关于char和string的区别和对应的详细操作

char和string的区别与操作详解 在编程语言中&#xff0c;char和string是用于处理字符和字符串的两种重要数据类型。它们在存储、操作和应用场景上存在显著差异。本文将从以下几个方面详细解析两者的区别及常见操作。 1. 基本定义与存储差异 char&#xff1a; 定义&#xff1a;…...

计算机网络之---RIP协议

RIP协议的作用 RIP (Routing Information Protocol) 协议是一个基于距离矢量的路由协议&#xff0c;它在网络中用来动态地交换路由信息。RIP 是最早的路由协议之一&#xff0c;通常用于小型和中型网络中。它的工作原理简单&#xff0c;易于实现&#xff0c;但在一些大型网络中效…...

F#语言的文件操作

F#语言的文件操作 F#是一种功能性编程语言&#xff0c;运行在.NET平台上&#xff0c;特别适合处理并发和复杂的数据处理任务。在这篇文章中&#xff0c;我们将介绍F#语言中的文件操作&#xff0c;包括读取、写入和管理文件的基本方法。通过实例来帮助理解&#xff0c;适合初学…...

微信小程序开发设置支持scss文件

在微信小程序开发中&#xff0c;默认是不支持scss文件的&#xff0c;创建文件的时候&#xff0c;css文件默认创建的是wxss后缀结尾的&#xff0c;但是用习惯了scss的怎么办呢&#xff1f; 首先找到project.config.json文件&#xff0c;打开文件在setting下设置useCompilerPlug…...

【Excel笔记_3】execl的单元格是#DIV/0!,判断如果是这个,则该单元格等于空

在 Excel 中&#xff0c;可以使用 IF 函数来判断单元格是否是 #DIV/0! 错误&#xff0c;并将其替换为空值&#xff08;即空字符串 ""&#xff09;。具体公式如下&#xff1a; IF(ISERROR(A1), "", A1)或者&#xff0c;如果只想判断 #DIV/0! 错误&#xff…...

51单片机入门基础

目录 一、基础知识储备 &#xff08;一&#xff09;了解51单片机的基本概念 &#xff08;二&#xff09;掌握数字电路基础 &#xff08;三&#xff09;学习C语言编程基础 二、开发环境搭建 &#xff08;一&#xff09;硬件准备 &#xff08;二&#xff09;软件准备 三、…...

设计模式 行为型 访问者模式(Visitor Pattern)与 常见技术框架应用 解析

访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为设计模式&#xff0c;它允许你在不改变元素类的前提下定义作用于这些元素的新操作。这种模式将算法与对象结构分离&#xff0c;使得可以独立地变化那些保存在复杂对象结构中的元素的操作。 假设我们有一个复杂的对…...

stable diffusion 量化学习笔记

文章目录 一、一些tensorRT背景及使用介绍1&#xff09;深度学习介绍2&#xff09;TensorRT优化策略介绍3&#xff09;TensorRT基础使用流程4&#xff09;dynamic shape 模式5&#xff09;TensorRT模型转换 二、TensorRT转onnx模型1&#xff09;onnx介绍2&#xff09;背景知识&…...

金融项目实战 04|JMeter实现自动化脚本接口测试及持续集成

目录 一、⾃动化测试理论 二、自动化脚本 1、添加断言 1️⃣注册、登录 2️⃣认证、充值、开户、投资 2、可重复执行&#xff1a;清除测试数据脚本按指定顺序执行 1️⃣如何可以做到可重复执⾏&#xff1f; 2️⃣清除测试数据&#xff1a;连接数据库setup线程组 ①明确…...

无需昂贵GPU:本地部署开源AI项目LocalAI在消费级硬件上运行大模型

无需昂贵GPU&#xff1a;本地部署开源AI项目LocalAI在消费级硬件上运行大模型 随着人工智能技术的快速发展&#xff0c;越来越多的AI模型被广泛应用于各个领域。然而&#xff0c;运行这些模型通常需要高性能的硬件支持&#xff0c;特别是GPU&#xff08;图形处理器&#xff09…...

selenium学习笔记

一.搭建环境 1.安装chrome #下载chrome wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb#安装chrome apt --fix-broken install ./google-chrome-stable_current_amd64.deb2.安装chromedriver 首先先查看版本&#xff1a;google-chrome --…...

SOME/IP协议详解 基础解读 涵盖SOME/IP协议解析 SOME/IP通讯机制 协议特点 错误处理机制

车载以太网协议栈总共可划分为五层&#xff0c;分别为物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0c;传输层&#xff0c;应用层&#xff0c;其中今天所要介绍的内容SOME/IP就是一种应用层协议。 SOME/IP协议内容按照AUTOSAR中的描述&#xff0c;我们可以更进一步…...

nginx 实现 正向代理、反向代理 、SSL(证书配置)、负载均衡 、虚拟域名 ,使用其他中间件监控

我们可以详细地配置 Nginx 来实现正向代理、反向代理、SSL、负载均衡和虚拟域名。同时&#xff0c;我会介绍如何使用一些中间件来监控 Nginx 的状态和性能。 1. 安装 Nginx 如果你还没有安装 Nginx&#xff0c;可以通过以下命令进行安装&#xff08;以 Ubuntu 为例&#xff0…...

基于单片机的智能花卉浇水系统的设计与实现

摘要&#xff1a; 随着人们生活水平的不断提高&#xff0c;生活节奏也越来越快。人们经常忽视办公室或者家居的花卉&#xff0c;忘记浇水。本文设计了一种基于单片机的智能浇水系统。目的是解决养殖花卉的人忘记浇水的问题。本系统以单片机AT89S52为控制芯片&#xff0c;能够按…...

《使用 YOLOV8 和 KerasCV 进行高效目标检测》

《使用 YOLOV8 和 KerasCV 进行高效目标检测》 作者&#xff1a;Gitesh Chawda创建日期&#xff1a;2023/06/26最后修改时间&#xff1a;2023/06/26描述&#xff1a;使用 KerasCV 训练自定义 YOLOV8 对象检测模型。 &#xff08;i&#xff09; 此示例使用 Keras 2 在 Colab 中…...

【Domain Generalization(3)】领域泛化与文生图之 -- QUOTA 任意领域中的生成物体的数量可控

系列文章目录 【Domain Generalization(1)】增量学习/在线学习/持续学习/迁移学习/多任务学习/元学习/领域适应/领域泛化概念理解第一篇了解了 DG 的概念&#xff0c;那么接下来将介绍 DG 近年在文生图中的相关应用/代表性工作。【Domain Generalization(2)】领域泛化在文生图…...

qml XmlListModel详解

1、概述 XmlListModel是QtQuick用于从XML数据创建只读模型的组件。它可以作为各种view元素的数据源&#xff0c;比如ListView、GridView、PathView等&#xff1b;也可以作为其他和model交互的元素的数据源。通过XmlRole定义角色&#xff0c;如name、age和height&#xff0c;并…...

CAPL如何设置TCP/IP传输层动态端口范围

在TCP/IP协议中,应用程序通过传输层协议TCP/UDP传输数据,接收方传输层收到数据后,根据传输层端口号把接收的数据上交给正确的应用程序。我们可以简单地认为传输层端口号是应用程序的标识,这就是为什么我们说应用程序在使用TCP/IP协议通信时要打开传输层端口号或者绑定端口号…...

Pandas常用数据类型

扩展库pandas常用的数据结构如下&#xff1a; &#xff08;1&#xff09;Series&#xff1a;带标签的一维数组 &#xff08;2&#xff09;DatetimeIndes&#xff1a;时间序列 &#xff08;3&#xff09;DateFrame&#xff1a;带标签且大小可变的二维表格结构 &#xff08;4…...

【AI大模型】BERT GPT ELMo模型的对比

目录 &#x1f354; BERT, GPT, ELMo之间的不同点 &#x1f354; BERT, GPT, ELMo各自的优点和缺点 &#x1f354; 小结 学习目标 理解BERT, GPT, ELMo相互间的不同点理解BERT, GPT, ELMo相互比较下的各自优点和缺点 &#x1f354; BERT, GPT, ELMo之间的不同点 关于特征提取…...

探索AGI:智能助手与自我赋能的新时代

目录 1 AGI1.1 DeepMind Levels&#xff08;2023年11月)1.2 OpenAI Levels&#xff08;2024年7月&#xff09;1.3 对比与总结1.4 AGI可能诞生哪里 2 基于AI的智能自动化助手2.1 通用型大模型2.2 专业的Agent和模型工具开发框架2.3 编程与代码生成助手2.4 视频和多模态生成2.5 商…...

Oracle Dataguard(主库为双节点集群)配置详解(5):将主库复制到备库并启动同步

Oracle Dataguard&#xff08;主库为双节点集群&#xff09;配置详解&#xff08;5&#xff09;&#xff1a;将主库复制到备库并启动同步 目录 Oracle Dataguard&#xff08;主库为双节点集群&#xff09;配置详解&#xff08;5&#xff09;&#xff1a;将主库复制到备库并启动…...

webrtc自适应分辨率的设置

DegradationPreference 是一个枚举类&#xff0c;用于在视频编码或实时通信&#xff08;如 WebRTC&#xff09;中指定系统资源不足时如何处理质量下降的策略。以下是该枚举类的中文解释&#xff1a; enum class DegradationPreference {// 禁用&#xff1a;不根据资源过载信号…...

提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息

网络和IP地址计算器 https://www.sojson.com/convert/subnetmask.html提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息。 子网掩码转换 子网掩码 /26 的含义二进制表示:/26 表示前 26 位是网络部分&#xff0c;剩下的 6 位是主机部分。对应的子网掩码为 255…...

WPF系列八:图形控件Path

简介 Path控件支持一种称为路径迷你语言&#xff08;Path Mini-Language&#xff09;的紧凑字符串格式&#xff0c;用于描述复杂的几何图形。这种语言通过一系列命令字母和坐标来定义路径上的点和线段&#xff0c;最终绘制出想要的图形。 绘制任意形状&#xff1a;可以用来绘…...

如何移除git中被跟踪的commit文件

忽略已被跟踪的文件 问题描述 如果某个文件已经被 Git 跟踪&#xff08;即已被提交到仓库&#xff09;&#xff0c;即使后来将其添加到 .gitignore 文件中&#xff0c;Git 仍会继续跟踪它。 解决方案 更新 .gitignore 文件 将需要忽略的文件加入 .gitignore&#xff1a; .env…...

15. C语言 函数指针与回调函数

本章目录: 前言什么是函数指针&#xff1f;定义声明方式 函数指针的基本用法示例&#xff1a;最大值函数输出示例&#xff1a; 回调函数与函数指针什么是回调函数&#xff1f;通俗解释 示例&#xff1a;回调函数实现动态数组填充输出示例&#xff1a; 进一步探索&#xff1a;带…...