200. 岛屿数量

题意

给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

题解

简单来看,只要每一个与1上下左右相互连接的就是同一块陆地,那么我们遍历整张图,加入当前点的状态为1,就是有一块陆地了,那么把与他相连的全部赋值为0就可以了,也就是没有价值了

代码


import java.util.*;public class Solution {public static void main(String[] args) {char arr[][]={{'A','B','C','E'},{'S','F','C','S'},{'A','D','E','E'}};}public int numIslands(char[][] grid) {int sum=0;for(int i=0;i<grid.length;i++){for(int j=0;j<grid[i].length;j++){if(grid[i][j]=='1'){sum++;dfs(grid,i,j);}}}return sum;}static int []zou1={0,0,0,1,-1};static int []zou2={0,-1,1,0,0};public static void dfs(char [][] arr,int x,int y){for(int i=1;i<=4;i++){int x1=zou1[i]+x;int y1=zou2[i]+y;if(x1<0||y1<0||x1>=arr.length||y1>=arr[0].length||arr[x1][y1]=='0'){continue;}arr[x1][y1]='0';dfs(arr,x1,y1);}}}

994. 腐烂的橘子

题意

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

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

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

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

题解

我们这题跟上一题实际上差不多,但是当前题需要求的是最小的分钟数,我们假设当前为3*3,表格为211 111 112 也就是表格边缘有两个的话,实际上对于当前而言,我们应当遍历当前的两个,将与他相连的都赋值为2,也就是被感染了,然后这就是1次,下一次就变成了221 212 122 ,这一次也是同理,遍历所有的2,将他相连的1感染即可

代码


import java.util.*;public class Solution {public static void main(String[] args) {char arr[][]={{'A','B','C','E'},{'S','F','C','S'},{'A','D','E','E'}};}static int []zou1={0,0,0,1,-1};static int []zou2={0,1,-1,0,0};public int orangesRotting(int[][] grid) {Queue<node>dp =new ArrayDeque<>();int sum=0;int ans=0;for(int i=0;i<grid.length;i++){for(int j=0;j<grid[i].length ;j++){if(grid[i][j]==1){sum++;}else if(grid[i][j]==2){dp.add(new node(i,j));}}}if(sum!=0&&dp.isEmpty()){return -1;}if(sum==0){return 0;}while(dp.size()>=1&&sum!=0){ans++;int f=dp.size();while(f>=1){f--;node now=dp.peek();dp.poll();for(int i=1;i<=4;i++){int x= now.x+zou1[i];int y=now.y+zou2[i];if(x<0||y<0||x>=grid.length||y>=grid[x].length||grid[x][y]!=1){continue;}grid[x][y]=2;dp.add(new node(x,y));sum--;}}}if(sum==0){return ans;}else{return -1;}}public  static class node{int x,y;node(int a,int b){x=a;y=b;}}}

207. 课程表

题意

你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。

在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程  bi 。

  • 例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。

请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 false 。

题解

简单来看,我们将课程视为一张图,也就是遍历图上面有没有环,这个就比较简单,每一次找一个节点进行dfs,看看会不会再一次遍历到当前节点即可

代码


import java.util.*;public class Solution {public static void main(String[] args) {int  arr[][]={{0,1}};}static List<List<Integer>> ways = new ArrayList<>(3000);static int[]mark =new int[3000];static boolean ans=true;public boolean canFinish(int numCourses, int[][] prerequisites) {ans=true;ways = new ArrayList<>(numCourses+10);mark = new int[numCourses+10];for (int i = 0; i < numCourses; i++) {mark[i]=0;ways.add(new ArrayList<>());}for(int i=0;i<prerequisites.length;i++){ways.get(prerequisites[i][0]).add(prerequisites[i][1]);}for(int i=0;i<numCourses;i++){if(!ans){return ans;}if(mark[i]==0){dfs(i);}}return ans;}static void dfs(int u){if (mark[u] == 1) {ans = false;return;}if (mark[u] == 2) { return;}mark[u] = 1; for (Integer now : ways.get(u)) {dfs(now);}mark[u] = 2; }}

208. 实现 Trie (前缀树)

题意

你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。

在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程  bi 。

  • 例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。

请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 false 。

题解

简单写一个字典树的题解我们令a=1,b=2等等,画图可得

这实际上就是一ke字典树的抽象模型,令a为根部节点,该图中就会存在abc,abde,abdd,也就是说,在我们进行插入操作的时候,插入的点与点之间的路径关系,但是如果有abd,那么怎么跟abde区分呢,实际上我们把结尾的坐标设置一个结束的按钮即可

代码

class Trie {boolean check;Trie[]child;public Trie() {check=false;child =new Trie[28];}public void insert(String word) {Trie node=this;char []arr=word.toCharArray();for(int i=0;i<arr.length;i++){char f=arr[i];int x=f-'a'+1;if(node.child[x]==null){node.child[x]=new Trie();}node=node.child[x];}node.check=true;}public boolean search(String word) {Trie node=find(word);if(node==null){return false;}if(node.check==false){return false;}return true;}public boolean startsWith(String prefix) {Trie node=find(prefix);if(node==null){return false;}return true;}public Trie find(String word){Trie node=this;char[]arr=word.toCharArray();for(int i=0;i<arr.length;i++){int f=arr[i]-'a'+1;if(node.child[f]==null){return null;}node=node.child[f];}return node;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu Gnome 安装和卸载 WhiteSur-gtk-theme 类 Mac 主题的正确方法

WhiteSur-gtk-theme 是一个流行的 GNOME 桌面主题&#xff0c;可以让 Ubuntu 的桌面环境看起来像 macOS。以下是安装和卸载 WhiteSur-gtk-theme 的详细步骤&#xff0c;包括解释每个命令的作用。 一、安装 WhiteSur-gtk-theme 1. 准备工作 在安装主题之前&#xff0c;建议确…

如何在DataGear 5.4.1 中快速制作SQL服务端分页的数据表格看板

DataGear 数据可视化分析平台&#xff08;http://datagear.tech/&#xff09; 在新发布的5.4.1版本中&#xff0c;内置表格图表新增了serverSidePaging选项&#xff0c;仅需通过简单的配置&#xff0c;即可为表格添加服务端分页、关键字查询、排序功能。 本文以SQL数据集作为数…

股指期货套保比例怎么算?

在金融市场里&#xff0c;套期保值&#xff08;套保&#xff09;是一种常见的风险管理手段&#xff0c;目的是通过期货市场对冲现货市场的风险。而套保比例&#xff08;也叫套保比率&#xff09;的计算&#xff0c;是套保操作的核心。简单来说&#xff0c;套保比例就是“期货头…

逻辑回归(Logistic Regression)算法详解

文章目录 一、逻辑回归&#xff1a;从线性回归到二分类的跨越1.1 逻辑回归简介1.2 Sigmoid函数&#xff1a;概率映射的数学本质1.3 参数 w w w 和 b b b 对Sigmoid的调控1.4 从线性回归到分类1.5 决策边界&#xff1a;从概率到类别&#xff08;结合图3、图4&#xff09; 二、…

HTTPS通信流程:SSL/TLS握手全解析

2021&#xff0c;2022&#xff0c;2023年1-8月看了很多技术书籍&#xff0c;现在想来忘了很多&#xff0c;用到的也不多&#xff0c;但是因为提前接触过&#xff0c;所以很多新东西&#xff0c;接受起来&#xff0c;比预想的要容易些。最近突然想要回忆下HTTPS&#xff0c;居然…

SVG 在 VSCode 中的使用与优势

SVG 在 VSCode 中的使用与优势 引言 SVG(可缩放矢量图形)是一种基于可扩展标记语言的图形图像格式,与传统的位图格式(如 JPEG 或 PNG)相比,SVG 图像具有更高的灵活性和可缩放性。随着前端开发领域的不断发展,SVG 在网页设计中的应用越来越广泛。本文将介绍 SVG 在 Vis…

Ubuntu开放mysql 3306端口

Ubuntu开放mysql 3306端口 1. 检查 UFW 防火墙规则2. 检查 iptables 规则 1. 检查 UFW 防火墙规则 sudo ufw status verbose | grep 3306若输出包含 3306/tcp ALLOW&#xff0c;表示端口已开放(如下) ubuntuUbuntu2404:~$ sudo ufw status verbose | grep 3306 3306/tcp …

CentOS 卸载docker

1、停止docker服务 systemctl stop docker.socket systemctl stop docker systemctl stop containerd 2、列出已安装的docker包 yum list installed | grep -i docker 输出如下&#xff1a; containerd.io.x86_64 1.6.33-3.1.el7 docker-ce-stab…

MySQL数据库----DML语句

目录 DML-介绍SQL-DML-添加数据SQL-DML-修改数据SQL-DML-删除数据 DML-介绍 DML英文全称是 Data Manipulation Language(数据操作语言)&#xff0c;用来对数据库中表的数据记录进行增删改操作。 添加数据&#xff08;INSERT&#xff09; 修改数据&#xff08;UPDATE&#xff…

Prompt:提示词工程

前言在LLM大放异彩的今天&#xff0c;一个简单的问题&#xff0c;可能就会引出一个方案&#xff0c;一篇散文&#xff0c;而驱动这一切的&#xff0c;正是输入的“提示词&#xff08;Prompt&#xff09;”Prompt工程就是&#xff1a;与大模型打交道时&#xff0c;如何更好地设计…

GSAP 动画库在 Vue3 项目中的使用总结

前言 GSAP&#xff08;GreenSock Animation Platform&#xff09;是目前最强大的 JavaScript 动画库之一&#xff0c;以其出色的性能和简洁的API而闻名。本文将基于实际项目经验&#xff0c;详细介绍如何在 Vue3 项目中使用 GSAP 创建流畅、专业的动画效果&#xff0c;包括核心…

【字节跳动】数据挖掘面试题0007:Kmeans原理,何时停止迭代

文章大纲 K-means 原理与迭代停止条件⚙️ 一、K-Means核心思想&#x1f501; 二、迭代步骤详解关键数学操作 ⏹️ 三、何时停止迭代&#xff1f;Kmeans 算法实现代码 ⚠️ 四、面试常见扩展问题1. K值如何选择&#xff1f;2. 初始质心影响结果吗&#xff1f;3. 算法缺陷与改进…

209、长度最小的子数组

题目&#xff1a; 解答&#xff1a; 滑动窗口&#xff0c;左右指针指向窗口两端&#xff0c;窗口为[left,right]&#xff0c;leftright时窗口只包含一个元素。 窗口内元素和sum>target时&#xff0c;left,推出左侧一个元素;sum<target时&#xff0c;right&#xff0c;加…

关机精灵——自动化与便利性

文章目录 背景目标实现下载 背景 自动化与便利性&#xff1a; 让电脑在用户无需值守或干预的情况下&#xff0c;在特定时间点&#xff08;倒计时结束&#xff09;或任务完成后自动关闭。节能与环保&#xff1a; 避免电脑在完成工作后或无人使用时继续空耗电力。时间管理与健康…

L2CAP协议详解:分段重组、QoS控制与多协议复用设计(面试宝典)

本文系统解析L2CAP协议的知识图谱&#xff0c;掌握面试核心考点&#xff0c;并通过真题演练提升实战能力。建议配合协议分析工具进行抓包实践&#xff0c;加深对协议机制的理解。 一、L2CAP 在蓝牙协议栈中的核心定位 L2CAP&#xff08;Logical Link Control and Adaptation P…

微软服务器安全问题

微软云服务器安全深度解析&#xff1a;挑战、应对与未来展望——构建韧性“安全之盾”的持续博弈&#xff01; 在当今数字化时代&#xff0c;云计算已成为众多企业和组织运行业务的核心基础设施和“数字生命线”&#xff0c;而微软云&#xff08;Azure&#xff09;作为全球领先…

后台管理系统的诞生 - 利用AI 1天完成整个后台管理系统的微服务后端+前端

AI创作系列(11)&#xff1a;后台管理系统的诞生 - 利用AI 1天完成整个后台管理系统的微服务后端前端 真实记录&#xff1a;我决定为海狸IM添加一个后台管理系统。从早上开始&#xff0c;到晚上结束&#xff0c;仅仅1天时间&#xff0c;我就完成了整个后台管理系统的微服务后端和…

开发自动驾驶系统所需工具

硬件开发平台 传感器系统 环境感知工具包括&#xff1a; 激光雷达&#xff1a;通过发射激光脉冲并接收反射光来测量距离&#xff0c;构建点云数据以描绘周围环境的三维结构。例如&#xff0c;Velodyne的VLP-16激光雷达每秒可发射约30万次激光脉冲&#xff0c;生成高密度的点…

Node.js特训专栏-实战进阶:12. 数据库事务处理与并发控制

🔥 欢迎来到 Node.js 实战专栏!在这里,每一行代码都是解锁高性能应用的钥匙,让我们一起开启 Node.js 的奇妙开发之旅! Node.js 特训专栏主页 专栏内容规划详情 数据库事务处理与并发控制:原理、实践与性能优化 一、事务基础:ACID特性与实现原理 1.1 ACID特性详解 事…

计算机网络(五)数据链路层 MAC和ARP协议

目录一、链路二、MAC地址三、ARP协议ARP工作流程​&#xff1a;​一、链路链路&#xff1a;一个结点到相邻结点的物理线路数据链路&#xff1a;在链路的基础上增加一些必要的软件&#xff08;协议的实现&#xff09;和硬件&#xff08;网络适配器&#xff09;。网络中的主机、路…