全球速卖通买家app/网站seo顾问

全球速卖通买家app,网站seo顾问,广州网站制作哪里好,做导航网站赚钱99.岛屿数量 深搜 题目链接:99. 岛屿数量 讲解链接:代码随想录 就是dfs模版题目 在dfs里可以先定义方向数组移动 再遍历分别向四个方向移动 同时记得更新当前nextx nexty 再判断是否越界 再执行判断条件 当前位置未走过 visited[i][j] false 一开始jav…

99.岛屿数量 深搜

题目链接:99. 岛屿数量

讲解链接:代码随想录

就是dfs模版题目 在dfs里可以先定义方向数组移动 再遍历分别向四个方向移动 同时记得更新当前nextx nexty 再判断是否越界 再执行判断条件 当前位置未走过 visited[i][j] = false 一开始java赋值都是false 而且 当前位置是数字1 那就可以继续走 把当前位置设置为1 visited[i][j] = true 再在此基础上继续dfs递归得出结果 这里递归的回溯做法在判断边界条件的时候就已经做了 

在边界条件上懵了好久。。记住了

java:

import java.util.Scanner;public class Test99 {public static int[][] dir = {{0,1},{1,0},{-1,0},{0,-1}};public static void dfs(boolean[][] visited, int x, int y,int [][] grid){for (int i = 0; i < 4; i++) {int nextx = x + dir[i][0];int nexty = y + dir[i][1];if(nextx < 0 || nexty < 0 || nexty >= grid[0].length || nextx >= grid.length){continue;}if(!visited[nextx][nexty] && grid[nextx][nexty] == 1){visited[nextx][nexty] = true;dfs(visited,nextx,nexty,grid);}}}public static void main(String[] args) {
//        for(int i = 0; i < dir.length; i++){
//            System.out.println(dir[i][0] + "/*******/" + dir[i][1]);
//        }Scanner scanner = new Scanner(System.in);int m = scanner.nextInt();int n = scanner.nextInt();int[][] grid = new int[m][n];for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){grid[i][j] = scanner.nextInt();}}//录入地图boolean[][] visited = new boolean[m][n];int ans = 0;for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(!visited[i][j] && grid[i][j] == 1){ans++;visited[i][j] = true;dfs(visited,i,j,grid);}}}System.out.println(ans);}
}

岛屿数量 广搜  

题目链接:99. 岛屿数量

讲解链接:代码随想录

bfs做法最重要的就是要避免重复节点 避免重复节点 避免重复节点

错误做法:从队列中取出节点时才标记访问

java:

while (!queue.isEmpty()) {Node current = queue.poll();visited[current.x][current.y] = true; // 取出时才标记for (int[] direction : directions) {int nextX = current.x + direction[0];int nextY = current.y + direction[1];if (isValid(nextX, nextY, grid) && !visited[nextX][nextY]) {queue.offer(new Node(nextX, nextY)); // 可能重复加入}}
}
正确做法:在节点加入队列时标记访问

java:

while (!queue.isEmpty()) {Node current = queue.poll();for (int[] direction : directions) {int nextX = current.x + direction[0];int nextY = current.y + direction[1];if (isValid(nextX, nextY, grid) && !visited[nextX][nextY]) {visited[nextX][nextY] = true; // 加入队列时标记queue.offer(new Node(nextX, nextY));}}
}

 bfs写法 代码随想录里用了个pair 我不想用这个 用两个队列分别存x y的值作为两个队列当前出列的当前节点 具体看代码  也是OK的能过

java:

import java.util.*;
public class Test99 {public static int[][] dir = {{0,1},{1,0},{-1,0},{0,-1}};public static void bfs(boolean[][] visited, int x,int y,int[][] grid){Queue<Integer> queue1 = new LinkedList<Integer>();Queue<Integer> queue2 = new LinkedList<Integer>();queue1.add(x);queue2.add(y);visited[x][y] = true;//一定要先标记当前节点为truewhile(!queue1.isEmpty()){int curx = queue1.poll();int cury = queue2.poll();//确定当前坐标for (int i = 0; i < 4; i++) {int nextx = curx + dir[i][0];int nexty = cury + dir[i][1];if(nextx < 0 || nexty < 0 || nextx >= grid.length || nexty >= grid[0].length){continue;}if(!visited[nextx][nexty] && grid[nextx][nexty] == 1){visited[nextx][nexty] = true;queue1.add(nextx);queue2.add(nexty);}}}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int m = scanner.nextInt();int n = scanner.nextInt();int[][] grid = new int[m][n];for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){grid[i][j] = scanner.nextInt();}}//录入地图boolean[][] visited = new boolean[m][n];int ans = 0;for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(!visited[i][j] && grid[i][j] == 1){ans++;bfs(visited,i,j,grid);}}}System.out.println(ans);}
}

100.岛屿的最大面积 

题目链接:100. 岛屿的最大面积

讲解链接:代码随想录

dfs做的比较方便 主要细节就是要求最大面积 遇到0或者遇到边界 遇到走过的1直接跳过 再用计数器求最大值

java:

import java.util.Scanner;class Test100 {static int count = 0;static int ans = 0;static int[][] dir = {{0,1},{1,0},{-1,0},{0,-1}};public static void dfs(boolean[][] visited, int x,int y, int[][] grid){count++;visited[x][y]=true;for(int i = 0; i < 4;i++){int nextx = x + dir[i][0];int nexty = y + dir[i][1];if(nextx < 0 || nexty < 0|| nextx >= grid.length|| nexty >= grid[0].length|| visited[nextx][nexty]|| grid[nextx][nexty] == 0){continue;}dfs(visited,nextx,nexty,grid);}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int m = scanner.nextInt();int n = scanner.nextInt();boolean[][] visited = new boolean[m][n];int[][] grid = new int[m][n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {grid[i][j] = scanner.nextInt();}}for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if(!visited[i][j] && grid[i][j] == 1){count = 0;dfs(visited,i,j,grid);ans = Math.max(count,ans);}}}System.out.println(ans);}
}

打卡冲冲冲

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

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

相关文章

springboot之YAML语法

目录 一、基本语法 写一个端口号和一个路径 Controller里的方法&#xff1a; 然后这样写才能访问到&#xff1a; 这是在yml里面写的&#xff0c;也可以写在properties里 再访问&#xff1a; 二、值的写法 1.普通类型(数字、字符串、布尔) 例子1&#xff1a; 配置文件…

ASP .NET Core 学习 (.NET 9)- 创建 API项目,并配置Swagger及API 分组或版本

本系列为个人学习 ASP .NET Core学习全过程记录&#xff0c;基于.NET 9 和 VS2022 &#xff0c;实现前后端分离项目基础框架搭建和部署&#xff0c;以简单、易理解为主&#xff0c;注重页面美观度和后台代码简洁明了&#xff0c;可能不会使用过多的高级语法和扩展&#xff0c;后…

LuaJIT Garbage Collector Algorithms

Explain 本篇文章是对Make Pall发表wili内容《LuaJIT 3.0 new Garbage Collector》的翻译和扩展&#xff0c;因为原文是对LuaJIT 2.x GC重要功能的简介和对LuaJIT 3.0 new GC的工作计划&#xff0c;所以它并不是系统性介绍GC的文章。希望以后能有精力系统性的对LuaJIT 2.x GC做…

ChatGPT大模型极简应用开发-CH1-初识 GPT-4 和 ChatGPT

文章目录 1.1 LLM 概述1.1.1 语言模型和NLP基础1.1.2 Transformer及在LLM中的作用1.1.3 解密 GPT 模型的标记化和预测步骤 1.2 GPT 模型简史&#xff1a;从 GPT-1 到 GPT-41.2.1 GPT11.2.2 GPT21.2.3 GPT-31.2.4 从 GPT-3 到 InstructGPT1.2.5 GPT-3.5、Codex 和 ChatGPT1.2.6 …

基于单片机的直流电机控制系统(论文+源码)

1 系统方案设计 本设计基于单片机的直流电机控制系统的总体架构设计如图2.1所示&#xff0c;其采用STM32F103单片机作为控制器&#xff0c;结合ESP8266 WiFi通信模块、L9110电机驱动电路、OLED液晶、按键等构成整个系统。用户在使用时&#xff0c;可以通过按键或者手机APP设定直…

【Linux】Linux入门(2)常见指令

目录 Linux下的文件ls 指令 --- 展示目录pwd指令 --- 显示当前目录cd 指令 --- 改变工作目录touch指令 --- 创建普通文件stat指令 --- 查看文件属性mkdir指令 --- 创建目录rmdir指令 --- 删除目录rm指令 --- 同时删除文件或目录man指令 --- 访问帮助手册cp指令 复制文件或目录m…

《自动驾驶与机器人中的SLAM技术》ch4:基于预积分和图优化的 GINS

前言&#xff1a;预积分图优化的结构 1 预积分的图优化顶点 这里使用 《自动驾驶与机器人中的SLAM技术》ch4&#xff1a;预积分学 中提到的散装的形式来实现预积分的顶点部分&#xff0c;所以每个状态被分为位姿&#xff08;&#xff09;、速度、陀螺零偏、加计零偏四种顶点&am…

BMC知识框图

OpenBMC简介 OpenBMC作为BMC的Linux发行版&#xff0c;旨在管理广泛系统&#xff0c;如企业、高性能计算、电信和大规模数据中心。 BMC&#xff0c;或Baseboard Manager Controller&#xff0c;是服务器主板上的专用微控制器&#xff0c;采用IPMI架构&#xff0c;具备智能性&…

书生大模型基础岛第五关

基础任务&#xff1a;使用 XTuner 微调 InternLM2-Chat-7B 实现自己的小助手认知&#xff0c;如下图所示&#xff08;图中的尖米需替换成自己的昵称&#xff09;&#xff0c;记录复现过程并截图。 1.配置环境 2.修改数据&#xff0c;将尖米修改为人工智能小助手 修改之前 修改…

EI Scopus双检索 | 2025年第四届信息与通信工程国际会议(JCICE 2025)

会议简介 Brief Introduction 2025年第四届信息与通信工程国际会议(JCICE 2025) 会议时间&#xff1a;2025年7月25日-27日 召开地点&#xff1a;中国哈尔滨 大会官网&#xff1a;www.jcice.org 由黑龙江大学和成都信息工程大学主办&#xff0c;江苏科技大学协办的2025年第四届信…

于灵动的变量变幻间:函数与计算逻辑的浪漫交织(下)

大家好啊&#xff0c;我是小象٩(๑ω๑)۶ 我的博客&#xff1a;Xiao Xiangζั͡ޓއއ 很高兴见到大家&#xff0c;希望能够和大家一起交流学习&#xff0c;共同进步。 这一节我们主要来学习单个函数的声明与定义&#xff0c;static和extern… 这里写目录标题 一、单个函数…

Python Pyside6 加Sqlite3 写一个 通用 进销存 系统 初型

图: 说明: 进销存管理系统说明文档 功能模块 1. 首页 显示关键业务数据商品总数供应商总数本月采购金额本月销售金额显示预警信息库存不足预警待付款采购单待收款销售单2. 商品管理 商品信息维护商品编码(唯一标识)商品名称规格型号单位分类进货价销售价库存数量预警…

2025西湖论剑-babytrace

前言 就做了下题目&#xff0c;pwn1/3 都是签到&#xff0c;pwn2 后面绕 ptrace 有点意思&#xff0c;简单记录一下 漏洞分析 子进程中的读/写功能没有检查负数的情况&#xff0c;存在越界读写&#xff1a; void __fastcall get_value(__int64 *int64_arr) {__int64 ll; //…

西门子【Library of Basic Controls (LBC)基本控制库”(LBC) 提供基本控制功能】

AF架构中使用的库 文章目录 Table of contents Legal information ..............................................................................................................................2 1 Introduction ................................................…

Phi小模型开发教程:用C#开发本地部署AI聊天工具,只需CPU,不需要GPU,3G内存就可以运行,不输GPT-3.5

大家好&#xff0c;我是编程乐趣。 行业诸多大佬一直在说&#xff1a;“‌2025年将是AI应用元年‌”&#xff0c;虽然说大佬的说法不一定对&#xff0c;但AI趋势肯定没错的。 对于我们程序员来说&#xff0c;储备AI应用开发技能&#xff0c;不管对找工作、接项目、创业肯定是…

python-leetcode-存在重复元素 II

219. 存在重复元素 II - 力扣&#xff08;LeetCode&#xff09; class Solution:def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:seen set()for i, num in enumerate(nums):if num in seen:return Trueseen.add(num)if len(seen) > k:seen.remove…

如何将本地 Node.js 服务部署到宝塔面板:完整的部署指南

文章简介&#xff1a; 将本地开发的 Node.js 项目部署到线上服务器是开发者常见的工作流程之一。在这篇文章中&#xff0c;我将详细介绍如何将本地的 Node.js 服务通过宝塔面板&#xff08;BT 面板&#xff09;上线。宝塔面板是一个强大的服务器管理工具&#xff0c;具有简洁的…

1月15学习

[SWPUCTF 2018]SimplePHP phar反序列化的三个前提条件 可以上传phar文件 有可以利用的魔术方法 文件操作函数的参数可控 网站中有两个功能&#xff1a;查看文件和上传文件&#xff0c;利用查看文件将源码都先弄下来进行PHP代码审计。 可以看到存在任意文件读取漏洞&#xff0…

【网络 MAC 学习专栏 -- 如何理解 PHY 的 Link Up】

请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 OverviewClause 22/Clause 45Clause 22Clause 45 PHY Link 状态的软件实现 转自&#xff1a; 开心果 Need Car 2022年10月20日 09:50 上海 Overview PHY…

慧集通(DataLinkX)iPaaS集成平台-系统管理之用户及权限

系统用户 通过左侧菜单栏【系统管理】→【用户及权限】→【系统用户】进入到系统用户维护的主界面&#xff0c;在该界面我们可以看到已经维护好的系统用户&#xff0c;以及一些关于系统用户的功能按钮&#xff0c;有新建、编辑、删除、停用、启用、解锁等。 新建&#xff1a;在…