华为热题总结(1)

200,924,739,179,1,20,93

200. 岛屿数量

中等

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

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

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

示例 1:

输入:grid = [["1","1","1","1","0"],["1","1","0","1","0"],["1","1","0","0","0"],["0","0","0","0","0"]
]
输出:1
class Solution {public int numIslands(char[][] grid) {if (grid == null || grid.length == 0) {return 0; // 如果网格为空,返回0,可以不写}int nr = grid.length; // 网格的行数int nc = grid[0].length; // 网格的列数int num_islands = 0; // 初始化岛屿数量为0// 遍历网格的每个单元格for (int r = 0; r < nr; r++) {for (int c = 0; c < nc; c++) {// 如果发现一个新的岛屿('1')if (grid[r][c] == '1') {++num_islands; // 岛屿数量加1dfs(grid, r, c); // 使用DFS将整个岛屿标记为已访问}}}return num_islands; // 返回岛屿的总数}// 帮助函数,用于在网格上执行深度优先搜索(DFS)void dfs(char[][] grid, int r, int c) {int nr = grid.length; // 网格的行数int nc = grid[0].length; // 网格的列数// 检查是否越界或者已经访问过('0')if (r < 0 || c < 0 || r >= nr || c >= nc || grid[r][c] == '0') {return; // 如果不是有效的DFS单元格,则返回}grid[r][c] = '0'; // 将当前单元格标记为已访问,设置为'0'// 递归地对上下左右相邻的单元格执行DFSdfs(grid, r - 1, c); // 上dfs(grid, r + 1, c); // 下dfs(grid, r, c - 1); // 左dfs(grid, r, c + 1); // 右}// 计算岛屿的数量
}

 

924. 尽量减少恶意软件的传播

困难

给出了一个由 n 个节点组成的网络,用 n × n 个邻接矩阵图 graph 表示。在节点网络中,当 graph[i][j] = 1 时,表示节点 i 能够直接连接到另一个节点 j。 

一些节点 initial 最初被恶意软件感染。只要两个节点直接连接,且其中至少一个节点受到恶意软件的感染,那么两个节点都将被恶意软件感染。这种恶意软件的传播将继续,直到没有更多的节点可以被这种方式感染。

假设 M(initial) 是在恶意软件停止传播之后,整个网络中感染恶意软件的最终节点数。

如果从 initial 中移除某一节点能够最小化 M(initial), 返回该节点。如果有多个节点满足条件,就返回索引最小的节点。

请注意,如果某个节点已从受感染节点的列表 initial 中删除,它以后仍有可能因恶意软件传播而受到感染。

示例 1:

输入:graph = [[1,1,0],[1,1,0],[0,0,1]], initial = [0,1]
输出:0

示例 2:

输入:graph = [[1,0,0],[0,1,0],[0,0,1]], initial = [0,2]
输出:0

示例 3:

输入:graph = [[1,1,1],[1,1,1],[1,1,1]], initial = [1,2]
输出:1



739. 每日温度

中等

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。

示例 1:

输入: temperatures = [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]
class Solution {public int[] dailyTemperatures(int[] temperatures) {int length = temperatures.length; // 获取温度数组的长度int[] ans = new int[length]; // 初始化答案数组,每个元素默认值为0Deque<Integer> stack = new LinkedList<Integer>(); // 使用栈来存储温度的索引for (int i = 0; i < length; i++) {int temperature = temperatures[i]; // 获取当前索引的温度// 当栈非空且当前温度大于栈顶温度对应的索引的温度while (!stack.isEmpty() && temperature > temperatures[stack.peek()]) {int prevIndex = stack.pop(); // 弹出栈顶索引ans[prevIndex] = i - prevIndex; // 计算温差天数,并将其填入答案数组}stack.push(i); // 将当前索引压入栈}return ans; // 返回结果数组}
}

179. 最大数

中等

给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。

注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。

示例 1:

输入nums = [10,2]
输出:"210"

示例 2:

输入nums = [3,30,34,5,9]
输出:"9534330"

 

1. 两数之和

已解答

简单

相关标签

相关企业

提示

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> hashtable = new HashMap<>();for (int i = 0; i < nums.length; i++) {if (hashtable.containsKey(target - nums[i])) {return new int[]{hashtable.get(target - nums[i]), i};}hashtable.put(nums[i], i);}return new int[0];}
}

 

20. 有效的括号

简单

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入:s = "()"
输出:true

示例 2:

输入:s = "()[]{}"
输出:true

示例 3:

输入:s = "(]"
输出:false
class Solution {public boolean isValid(String s) {Deque<Character> stack = new ArrayDeque<>();int n = s.length();for (int i = 0; i < n; i++) {char ch = s.charAt(i);if (ch == '(') {stack.push(')');} else if (ch == '[') {stack.push(']');} else if (ch == '{') {stack.push('}');} else if (!stack.isEmpty() && ch == stack.peek()) {stack.pop();} else {return false;}}return stack.isEmpty();}
}

 

93. 复原 IP 地址

中等

相关标签

相关企业

有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。

  • 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245""192.168.1.312" 和 "192.168@1.1" 是 无效 IP 地址。

给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 '.' 来形成。你 不能 重新排序或删除 s 中的任何数字。你可以按 任何 顺序返回答案。

示例 1:

输入:s = "25525511135"
输出:["255.255.11.135","255.255.111.35"]

示例 2:

输入:s = "0000"
输出:["0.0.0.0"]

示例 3:

输入:s = "101023"
输出:["1.0.10.23","1.0.102.3","10.1.0.23","10.10.2.3","101.0.2.3"]
import java.util.ArrayList;
import java.util.List;class Solution {List<String> ans = new ArrayList<>(); // 保存所有可能的 IP 地址StringBuilder path = new StringBuilder(); // 保存当前的 IP 地址段// 入口函数,给定字符串 s,返回所有合法的 IP 地址public List<String> restoreIpAddresses(String s) {backTrack(s, 0, 0); // 开始回溯return ans; // 返回结果}// 回溯函数,startIndex 表示当前处理到的字符串位置,count 表示已处理的 IP 地址段数private void backTrack(String s, int startIndex, int count) {// 如果处理了 4 段并且已经用完所有数字,则保存结果if (count == 4 && startIndex == s.length()) {ans.add(path.deleteCharAt(path.length() - 1).toString()); // 去掉末尾的点return;}// 如果超过 4 段,则直接返回if (count > 4) {return;}// 遍历字符串,尝试取一个、两个或三个字符作为一个 IP 地址段for (int i = startIndex; i < s.length() && i < startIndex + 3; i++) {String str = s.substring(startIndex, i + 1); // 当前取的 IP 地址段if (isTrue(str)) { // 判断是否合法int len = path.length(); // 记录当前路径长度path.append(str).append("."); // 添加 IP 地址段backTrack(s, i + 1, count + 1); // 递归处理剩余的字符串path.setLength(len); // 回溯,恢复路径长度}}}// 判断一个字符串是否为合法的 IP 地址段private boolean isTrue(String s) {// 如果长度大于1且首字符为0,则不是合法的 IP 地址段if (s.length() > 1 && s.charAt(0) == '0') {return false;}// 将字符串转换为整数,判断是否在 0 到 255 之间int a = Integer.parseInt(s);return a >= 0 && a <= 255;}
}

 

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

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

相关文章

Springboot集成Mybatispuls操作mysql数据库-03

MyBatis-Plus&#xff08;简称MP&#xff09;是一个MyBatis的增强工具&#xff0c;在MyBatis的基础上只做增强而不做改变。它支持所有MyBatis原生的特性&#xff0c;因此引入MyBatis-Plus不会对现有的MyBatis构架产生任何影响。MyBatis-Plus旨在简化开发、提高效率&#xff0c;…

土壤重金属含量分布、Cd镉含量、Cr、Pb、Cu、Zn、As和Hg、土壤采样点、土壤类型分布

土壤是人类赖以生存和发展的重要资源之一,也是陆地生态系统重要的组成部分。近年来, 随着我国城市化进程加快&#xff0c;矿产资源开发、金属加工冶炼、化工生产、污水灌溉以及不合理的化肥农药施用等因素导致重金属在农田土壤中不断富集。重金属作为土壤环境中一种具有潜在危害…

练习题(2024/5/6)

1路径总和 II 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [5,4,8,11,null,13,4,7,2,null,null,5,1], target…

vue3 axios数据请求封装

准备工作 vue3jsvite 首先确认package.json中有axios 如果没有 运行 npm install axios 安装axios 成功后在package.json文件会显示。 第一步 创建app.js、request.js 两个文件在同级目录下即可 api.js import instance from "./request"; const api_name "&qu…

前端小案例

案例一: 在 onLoad 函数中&#xff0c;首先通过 wx.getStorageSync(userInfo) 获取用户信息&#xff0c;如果用户信息存在&#xff0c;则从中提取用户ID&#xff0c;并将其存储在页面数据中&#xff0c;以便后续使用。如果用户信息不存在&#xff0c;你可以根据实际需求进行相…

linux安装 mysql

环境&#xff1a;centOS8 一、安装 1 安装wget库 sudo yum -y install wget 2. 安装 mysql 换yum源 亲测成功&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 换yum源 1.下载对应版本的repo文件 wget -O CentOS-Base.repo http://mirrors…

watch侦听器

在 Vue.js 中&#xff0c;watch 侦听器用于观察和响应 Vue 实例上的数据变动。当你想在数据变化时执行异步或开销较大的操作时&#xff0c;这个方式是最有用的。与计算属性不同&#xff0c;watch 侦听器允许你执行更复杂的逻辑&#xff0c;包括异步操作&#xff0c;并且只有当观…

C#编程模式之外观模式

创作背景&#xff1a;给位伙伴&#xff0c;五一小长假结束&#xff0c;我们继续对C#编程之路进行探索。本文将继续编程模式的研究&#xff0c;主要介绍外观模式。外观模式也称为门面模式&#xff0c;是一种结构型设计模式&#xff0c;它的目的是为子系统中的一组接口提供一个统…

力扣每日一练(螺旋矩阵)

54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,…

centos 8.2 安装配置 vsftpd 虚拟用户访问

1安装vsftp yum install vsftpd -y 2安装db5 wget https://github.com/berkeleydb/libdb/releases/download/v5.3.28/db-5.3.28.tar.gz . tar zxvf db-5.3.28.tar.gz cd db-5.3.28/build_unix/ ../dist/configure -prefix/usr/local Make Make install3建用户等 useradd…

ESCI3罗德与施瓦茨ESCI3测试接收机

181/2461/8938产品概述&#xff1a; R&S ESCI接收机的特点包括: 出色表现 多达10个子范围的可编程扫描表自动或交互式预览和最终EMI测量的内部测试程序预扫描、数据缩减&#xff08;峰列表&#xff09;和最终测量的评估功能光谱分析仪快速ACP测量时域分析&#xff08;记…

Linux内核--设备驱动(六)媒体驱动框架整理(2)--视频

目录 一、引言 二、V4L2 ------>2.1、主要结构体 ------------>2.2.1、video_device ------------>2.2.2、v4l2_device ------------>2.2.3、v4l2_subdev ------>2.2、流程 ------>2.3、驱动实例 ------>2.4、V4L2的ioctl类型 ------------>…

Unity射击游戏开发教程:(11)制造敌人爆炸

增加爆炸效果 爆炸一切都变得更好!尤其是当你消灭敌人时。在这篇文章中,我将讨论如何在敌人被击中时为其添加爆炸动画。 在敌人的预制件中,您将需要创建一个新的动画。查看控制动画的动画器,默认情况下将从进入动画到敌人爆炸动画。这意味着,一旦敌人被实例化,敌人爆炸…

【Git】【MacOS】Github从创建与生成SSH公钥

创建账号 这一步不过多赘述&#xff0c;根据自己的邮箱新创建一个账号 配置SSH公钥 本人是macOS系统&#xff0c;首先从终端输入 cd ~/.ssh进入.ssh目录,然后通过 ls查看有没有一个叫做id_rsa.pub的文件 本人之前生成过SSH公钥,如果没有的话&#xff0c;通过 ssh-keygen -t…

vue 金额组件,输入提示单位:‘千’、‘万’、‘十万’...并用‘,’三个格式化

近期项目中遇到一个需求&#xff0c;金额输入框&#xff0c;输入过程中自动提示‘千’、‘万’、‘十万’、‘百万’......等单位提示&#xff0c;鼠标失去焦点后&#xff0c;并用‘,’三位隔开计数。 例如&#xff1a; 输入&#xff1a;12345.99 失去焦点&#xff1a;12,34…

Unit3

&#x1f4e3;Unit3 ✨1. capt&#xff0c;cept&#xff0c;ceive 抓&#xff0c;收 capture captain capable capability accept be accepted as acceptance acceptable unacceptable conceive conceive of sth concept conception except nothing expect exception …

科技云报道:从亚运到奥运,大型国际赛事共赴“云端”

科技云报道原创。 “广播电视转播技术拯救了奥运会”前奥委会主席萨马兰奇这句话广为流传。 奥运会、世界杯、亚运会这样的全球大型体育赛事不仅是体育竞技的盛宴&#xff0c;也是商业盛宴&#xff0c;还是技术与人文的融合秀。随着科技的进步&#xff0c;技术在体育赛事中扮…

vue中怎样清除computed的缓存

vue中computed计算属性自带缓存&#xff0c;会提高程序的渲染性能&#xff0c;但根据业务需求以及相应的优化&#xff0c;可能要清除computed的缓存&#xff0c;具体方法和场景分为了vue2和vue3 vue2&#xff1a; this.$delete(this.someObject, cachedProperty); 使用 this…

嵌入式交叉编译:x265

下载 multicoreware / x265_git / Downloads — Bitbucket 解压编译 BUILD_DIR${HOME}/build_libs CROSS_NAMEaarch64-mix210-linuxcd build/aarch64-linuxmake cleancmake \-G "Unix Makefiles" \-DCMAKE_C_COMPILER${CROSS_NAME}-gcc \-DCMAKE_CXX_COMPILER${CR…

实现主动威胁狩猎的7种方法及其特点分析

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、基于假设的威胁狩猎二、基于异常行为的威…