牛客 2024春招冲刺题单 ONT82 腐烂的苹果【中等 BFS Java,Go】

news2024/11/26 10:36:36

题目

在这里插入图片描述
题目链接:
https://www.nowcoder.com/practice/54ab9865ce7a45968b126d6968a77f34

思路

	广度优先搜索。首先找到2坐标集合,然后每次往四周为1的坐标扩展

参考答案Java

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param grid int整型ArrayList<ArrayList<>>
     * @return int整型
     */
    public int rotApple (ArrayList<ArrayList<Integer>> grid) {
        //BFS
        int n = grid.size();
        int m = grid.get(0).size();

        Queue<Integer> q2 = new LinkedList<>();

        int total1 = 0; //正常的苹果个数
        for (int i = 0; i < n ; i++) {
            for (int j = 0; j < m ; j++) {
                if (grid.get(i).get(j) == 2) {
                    q2.add(i * m + j);
                }
                if (grid.get(i).get(j) == 1) {
                    total1++;
                }
            }
        }


        int[] dirx = {-1, 1, 0, 0};
        int[] diry = {0, 0, -1, 1};
        int deep = 0;
        int change2 = 0; //变为腐烂的苹果的个数
        while (!q2.isEmpty()) {
            int size = q2.size();
            for (int i = 0; i < size ; i++) {
                int xy = q2.poll();
                int x1 = xy / m; //横坐标
                int y1 = xy % m; //纵坐标

                for (int j = 0; j < 4 ; j++) {
                    int x2 = x1 + dirx[j];
                    int y2 = y1 + diry[j];

                    if (x2 >= 0 && x2 < n && y2 >= 0 && y2 < m && grid.get(x2).get(y2) == 1) {
                        q2.add(x2 * m + y2);
                        change2++;
                        grid.get(x2).set(y2, 2);
                    }
                }
            }

            deep++;
        }


        if (change2 != total1) return -1; //正常的苹果没有全部腐烂,返回-1
        return deep - 1;
    }
}

参考答案Go

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param grid int整型二维数组
 * @return int整型
 */
func rotApple(grid [][]int) int {
	// BFS
	n := len(grid)
	m := len(grid[0])
	total1 := 0   //正常的苹果个数
	q2 := []int{} //切片模拟队列

	for i := 0; i < n; i++ {
		for j := 0; j < m; j++ {
			if grid[i][j] == 2 {
				q2 = append(q2, i*m+j)
			}

			if grid[i][j] == 1 {
				total1++
			}
		}
	}

	change2 := 0 //正常苹果变为腐烂苹果的个数
	deep := 0

	dirx := []int{-1, 1, 0, 0}
	diry := []int{0, 0, -1, 1}
	for len(q2) > 0 {
		size := len(q2)
		q2new := []int{}
		for i := 0; i < size; i++ {
			xy := q2[i]
			x1 := xy / m //xy对应的 横坐标
			y1 := xy % m //xy对应的纵坐标

			for j := 0; j < 4; j++ {
				x2 := x1 + dirx[j]
				y2 := y1 + diry[j]

				if x2 >= 0 && x2 < n && y2 >= 0 && y2 < m && grid[x2][y2] == 1 {
					grid[x2][y2] = 2
					change2++
					q2new = append(q2new, x2*m+y2)
				}
			}
		}
		q2 = q2new
		deep++
	}

	if change2 != total1 {
		return -1
	}

	return deep - 1
}

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

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

相关文章

Unity 世界坐标、屏幕坐标、UGUI 坐标 相互转换

Unity 世界坐标、屏幕坐标、UGUI 坐标 相互转换坐标转换是游戏开发过程中必不可少的环节 看下图 世界坐标、屏幕坐标、UI 坐标 三种坐标系的转换过程&#xff0c;此文章中的 UI 坐标特指 UGUI 坐标 从上图可以看到&#xff0c;世界坐标 和 UI 坐标 需要通过 屏幕坐标作为中间转…

从“危”到“机”:HubSpot如何助企业转化出海营销CRM风险?

在全球化的大背景下&#xff0c;越来越多的企业选择出海拓展业务&#xff0c;以寻求更大的发展空间。然而&#xff0c;随着市场的扩大&#xff0c;企业在出海营销过程中也面临着各种风险。为了有效规避这些风险&#xff0c;许多企业选择借助HubSpot这样的专业营销软件。今天运营…

A Study of Network Forensic Investgation in Docker Environments文章翻译

A Study of Network Forensic Investgation in Docker Environments Docker环境下的网络取证研究 摘要 网络罪犯利用越来越多的技术(如虚拟机或基于容器的基础设施)进行恶意活动。 这些虚拟环境的固有动态简化了恶意服务的快速创建,并隐藏了所涉及的系统,这是以前没有的技…

C语言面试题之化栈为队

化栈为队 实例要求 C语言实现实现一个MyQueue类&#xff0c;该类用两个栈来实现一个队列&#xff1b;示例&#xff1a; MyQueue queue new MyQueue();queue.push(1); queue.push(2); queue.peek(); // 返回 1 queue.pop(); // 返回 1 queue.empty(); // 返回 false说明&…

关于51单片机TMOD定时器的安全配置

定时器介绍&#xff1a; -------------------------------------------------------------------------------------------------------------------------- 首先配置的是控制寄存器 TCON 说直白点&#xff0c;这个寄存器就是用来计数的&#xff0c;打开计时器&#xff0c;关…

UEditor 任意文件上传漏洞

前言 前段时间在做某政府单位的项目的时候发现存在该漏洞&#xff0c;虽然是一个老洞&#xff0c;但这也是容易被忽视&#xff0c;且能快速拿到shell的漏洞&#xff0c;在利用方式上有一些不一样的心得&#xff0c;希望能帮助到一些还不太了解的小伙伴&#xff0c;故此写了此篇…

AI爆款文案 巧用AI大模型让文案变现插上翅膀

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

kali基础渗透学习,永恒之蓝,木马实战

简介 kali的学习本质是在linux上对一些攻击软件的使用&#xff0c;只是学习的初期 先在终端切换到root用户&#xff0c;以便于有些工具对权限的要求 下载链接 镜像源kali 攻击流程 公网信息搜集 寻找漏洞&#xff0c;突破口&#xff0c;以进入内网 进入内网&#xff0c…

组装机械狗电子玩具方案

这款机械狗玩具电子方案结合了现代电子技术和人工智能元素&#xff0c;旨在为用户提供一个高科技、互动性强的娱乐体验。通过不断的软件更新和硬件迭代&#xff0c;机械狗的功能将持续扩展。 一、功能特点&#xff1a; 1、自动巡游&#xff1a;机械狗能够自主在房间内巡游&am…

用Wireshark工具对gRPC接口进行本地抓包

前言&#xff1a; 本人一名敲代码的程序员&#xff0c;突然领导安排研究gRPC接口&#xff0c;并且抓包分析&#xff0c; 抓包工具试了Charles、mitmproxy都不行&#xff0c;浪费很多时间&#xff0c;最后使用Wireshark工具对本地启动的gRPC接口成功抓包&#xff0c;关于安装W…

modelsim 仿真bmp图片实现RGB_YCrCb

用modelsim_se软件仿真bmp图片&#xff0c;可在modesim中实现一些图片处理算法和查看效果 本文以最简单的仿真一副bmp图像为例&#xff0c;实现RGB_YCrCb的modelsim仿真,带源工程 1、先在本地建立文件夹 2、首先打开moselsim 3、新建库和新建项目&#xff0c;保存到建立的文件…

逐行讲解python实现A*路径规划

目录 搜索步骤关键点开集合和闭集合复杂度优化 代价父节点替换 距离地图设置 完整代码备注 搜索步骤 A*路径规划是一种广度优先搜索算法&#xff0c;需要在栅格地图上进行搜索。其主要搜索步骤如下&#xff1a; 得到栅格地图&#xff0c;确定起点和终点位置&#xff1b;计算起…

Vue项目打包配置生产环境去掉console.log语句的方法

一、Vue2项目 使用webpack内置的 terser 工具&#xff0c;在vue.config.js文件加上相应的配置即可。 二、Vue3项目 同样是使用 terser 工具&#xff0c;不过vite没有内置terser&#xff0c;需要手动安装依赖 安装完后在vite.config.js文件加上相应的配置即可。 2024-4-9

深挖抖快近2000个品类,我们发现了10万亿“她经济”的新商机!

在这个数字化时代&#xff0c;女性消费力量正以前所未有的速度崛起。根据埃森哲数据显示&#xff0c;我国现有近4亿20岁-60岁的女性消费者&#xff0c;其每年所掌握的消费支出高达10万亿元&#xff01; 面对庞大的“她经济”市场&#xff0c;专属于女性的三八妇女节&#xff0c…

【Python系列】读取 Excel 第一列数据并赋值到指定列

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

米多论文方便吗 #经验分享#经验分享

米多论文是一款专业的论文写作、查重和降重工具&#xff0c;被广泛认可为高效、靠谱、方便的软件。无论是学生、科研人员还是教师&#xff0c;都可以从中受益匪浅。 首先&#xff0c;米多论文拥有强大的查重功能&#xff0c;可以帮助用户快速检测论文中的抄袭内容&#xff0c;提…

openGauss 5.0 单点企业版部署_Centos7_x86(上)

背景 通过openGauss提供的脚本安装时&#xff0c;只允许在单台物理机部署一个数据库系统。如果您需要在单台物理机部署多个数据库系统&#xff0c;建议您通过命令行安装&#xff0c;不需要通过openGauss提供的安装脚本执行安装。 本文档环境&#xff1a;CentOS7.9 x86_64 4G1…

人社大赛算法赛题解题思路分享+季军+三马一曹团队

团队成员介绍: 梅鵾 上海交通大学 众安科技 算法工程师 吴栋梁 复旦大学 众安科技 算法工程师 李玉娇 复旦大学 众安科技 算法工程师 一、赛题背景分析及理解 本赛题提供了部分地区2016年度的医疗保险就医结…

最新剧透前沿信息GPT-5或将今年发布

GPT2 很糟糕 &#xff0c;GPT3 很糟糕 &#xff0c;GPT4 可以 &#xff0c;但 GPT5 会很好。 PS:GPT2 很糟糕,3 很糟糕,4 可以,5 很可以。 如果想升级GPT4玩玩&#xff0c;地址 今年发布的具有推理功能的 GPT5不断发展&#xff0c;就像 iPhone 一样 Sam Altman 于 17 日&am…