网友:感谢华为救了我的下半生。

2024-02-09 18:20
文章标签 华为 网友 感谢 下半生

本文主要是介绍网友:感谢华为救了我的下半生。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(关注数据结构和算法,了解更多新知识)

最近一位网友发视频称,华为Mate60 Pro帮他挡了子弹。视频配文:“一场意外,没有这个手机隔挡,下半生我可能就在轮椅上度过了!”视频中,手机摄像头右侧被击中,该网友还晒出了自己大腿中枪受伤的照片。

c16cd8a8075f47e9ee0ea7cbd559ae25.jpeg

aad8b54623c848bd0a73141a17134b6f.jpeg

8e195ad2a9622bd5be6c050a3c352ba1.jpeg

933c6bb93d575aa4b5c030e7fea594ff.png

在该视频的下面其中一位网友评论说:本以为是闹着玩的,直到看见了他的IP。该IP显示的是云南,应该是处于云南和果敢的交界处。

89b10e4b1f74d1c9d1d511e48fd7a84b.png

其他网友说:打中的应该是流弹,反弹后的子弹或者碎片,如果正面直接挡子弹,在加几台手机都不够。我觉得这个才是最真实的,应该是流弹擦伤,幸亏兜里装个手机挡了一下,要不然会更加严重,搞不好下半生就变成下半身了。

f02e1df8dd8bed5832e11ba63f6d4aa9.png

632b80bacdf5e2976e6ac8460829885c.png

--------------下面是今天的算法题--------------

我们来看一道华为的面试题,这题是LeetCode的第221题:最大正方形。一网友在华为的面试中遇到这题,我们来看下。

64cb845a72e8ec254c9017a15d16077f.png

问题描述

来源:LeetCode第221题

难度:中等

在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。

示例1:

af297ebfbf7a46b07c45b0d117b71fe2.jpeg

输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]

输出:4

示例2:

eaf54e0d3f7ccae6debb43d4e2020322.jpeg

输入:matrix = [["0","1"],["1","0"]]

输出:1

  • m == matrix.length

  • n == matrix[i].length

  • 1 <= m, n <= 300

  • matrix[i][j] 为 '0' 或 '1'

问题分析

这题让计算最大正方形面积,只需要找到最大正方形的边长就可以计算面积了。

可以使用动态规划解决,定义二维数组dp[m][n],其中dp[i][j]表示在矩阵中以坐标[i,j]为右下角的最大正方形边长。如果想求dp[i][j],需要判断矩阵中matrix[i][j]的值。

1,如果matrix[i][j]是0就没法构成正方形,所以dp[i][j]=0。

2,如果matrix[i][j]是1,说明可以构成一个正方形,并且这个正方形的边长最小是1。

        2.1,如果求最大值,还需要判断他左上角的值dp[i-1][j-1],如果dp[i-1][j-1]是0,那么以坐标[i,j]为右下角的最大正方形边长就是1,如下图所示

76dfc28435d2a95f2d1182ee82fd845e.png

        2.2,如果左上角的值dp[i-1][j-1]不是0,那么以坐标[i,j]为右下角有可能可以构成一个更大的正方形。为啥说是有可能,因为如果要确定他能不能构成一个更大的正方形,还要往他的上边和左边找,看下下面的图。

16bbb6062fa3245b3a581624b72a9bef.png

有可能是下面这种情况,就是左边或者上边的某一个高度小于dp[i-1][j-1]的值,要想构成最大的正方形我们只能取最小的。

d9c44cd1106a70d9b1a2651641830a1b.png

也有可能是下面这种,就是左边和上边的高度都不小于dp[i-1][j-1]的值。

fbf01862f5629575ac2fe16b6e02a621.png

所以我们可以得出结论,如果matrix[i,j]是1,那么以他为右下角的最大正方形边长是min(dp[i-1][j-1],dp[i-1][j],dp[i][j-1])+1;

所以我们可以找出递推公式

如果matrix[i,j]为0,则dp[i][j]=0;

如果matrix[i,j]为1,则dp[i][j]=min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1;

JAVA:

public int maximalSquare(char[][] matrix) {// 二维矩阵的宽和高int m = matrix.length;int n = matrix[0].length;int[][] dp = new int[m + 1][n + 1];int maxSide = 0;// 最大正方形的宽for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (matrix[i - 1][j - 1] == '1') {// 递推公式dp[i][j] = Math.min(dp[i - 1][j],Math.min(dp[i - 1][j - 1], dp[i][j - 1])) + 1;// 记录最大的边长maxSide = Math.max(maxSide, dp[i][j]);}}}return maxSide * maxSide; // 返回正方形的面积
}

C++:

public:int maximalSquare(vector<vector<char>> &matrix) {// 二维矩阵的宽和高int m = matrix.size();int n = matrix[0].size();vector<vector<int>> dp(m + 1, vector(n + 1, 0));int maxSide = 0;// 最大正方形的宽for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (matrix[i - 1][j - 1] == '1') {// 递推公式dp[i][j] = min(dp[i - 1][j],min(dp[i - 1][j - 1], dp[i][j - 1])) + 1;// 记录最大的边长maxSide = max(maxSide, dp[i][j]);}}}return maxSide * maxSide; // 返回正方形的面积}

C:

#define min(a, b) (((a) < (b)) ? (a) : (b))
#define max(a, b) (((a) > (b)) ? (a) : (b))int maximalSquare(char **matrix, int matrixSize, int *matrixColSize) {// 二维矩阵的宽和高int dp[matrixSize + 1][*matrixColSize + 1];memset(dp, 0, sizeof dp);int maxSide = 0;// 最大正方形的宽for (int i = 1; i <= matrixSize; i++) {for (int j = 1; j <= *matrixColSize; j++) {if (matrix[i - 1][j - 1] == '1') {// 递推公式dp[i][j] = min(dp[i - 1][j],min(dp[i - 1][j - 1], dp[i][j - 1])) + 1;// 记录最大的边长maxSide = max(maxSide, dp[i][j]);}}}return maxSide * maxSide; // 返回正方形的面积
}

Python:

def maximalSquare(self, matrix: List[List[str]]) -> int:# 二维矩阵的宽和高m, n = len(matrix), len(matrix[0])dp = [[0] * (n + 1) for _ in range(m + 1)]maxSide = 0  # 最大正方形的宽for i in range(1, m + 1):for j in range(1, n + 1):if matrix[i - 1][j - 1] == '1':# 递推公式dp[i][j] = min(dp[i - 1][j], dp[i - 1][j - 1], dp[i][j - 1]) + 1# 记录最大的边长maxSide = max(maxSide, dp[i][j])return maxSide * maxSide  # 返回正方形的面积

45bdeebdba89bad7f7f88f3cac234aa7.gif

笔者简介

博哥,真名:王一博,毕业十多年,《算法秘籍》作者,专注于数据结构和算法的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解700多题,对算法题有自己独特的解题思路和解题技巧,喜欢的可以给个关注,也可以下载我整理的1000多页的PDF算法文档。

  • 我的新书《算法秘籍》出版了。

  • 公众号是怎么写出10万+的文章的。

  • 华为招数学博士的要求非常奇怪。。。

这篇关于网友:感谢华为救了我的下半生。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/694968

相关文章

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

华为OD机试真题-学生方阵-2024年OD统一考试(E卷)

题目描述 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。 注:学生个数不会超过10000 输入描述 输入的第一行为矩阵的行数和列数, 接下来的 n行为矩阵元素,元素间用""分隔。 输出描述 输出一个整数,表示矩阵中最长的位

华为 HCIP-Datacom H12-821 题库 (13)

有需要题库的可以看主页置顶 1.可以携带外部路由的 tag 标签信息的是以下哪一类 LSA? A、4 类 LSA B、5 类 LSA  C、3 类 LSA  D、2 类 LSA 答案:B 解析: 暂无解析 2..两台路由器直连,并设定网络类型为 p2p 建立OSPF 邻居。那么两台路由器传输 OSPF 报文的目的 IP 地址是以下哪一项? A、使用组播地址 224.0.0.6 B

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构,客户端可以订阅任意数量的主题,并可以发布消息到这些主题。服务器(通常称为MQTT Broker)则负责接受来自客户端的连接请求,并转发消

华为23年笔试题

消息传输 题目描述 在给定的 m x n (1 <= m, n <= 1000) 网格地图 grid 中,分布着一些信号塔,用于区域间通信。 每个单元格可以有以下三种状态:  值 0 代表空地,无法传递信号;  值 1 代表信号塔 A,在收到消息后,信号塔 A 可以在 1ms 后将信号发送给上下左右四个方向的信号塔; 值 2 代表信号塔 B,在收到消息后,信号塔 B 可以在 2ms

实现的动态规划问题华为笔试题C++实现

秋招刷力扣题,我觉得我对动态规划不是熟练,在此处做总结 动态规划(Dynamic Programming,DP)算法通常用于求解某种具有最优性质的问题。在这类问题中,可能会有许多可行解,每一个解都对应一个值,我们希望找到具有最优值的解。我觉得最大的问题就是对问题的分解,分解后的问题与分解前的问题具有相同的决策机制,将决策机制进行抽象,最终可以得到对应的解; 动态规划中开始介绍的爬楼梯等问题,答

828华为云征文|基于华为云Flexus云服务器X实例部搭建Halo博客平台

华为云征文|基于华为云Flexus云服务器X实例部搭建Halo博客平台 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、Halo介绍2.1 Halo 简介2.2 Halo 特点 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、购买华为云Flexus云服务器X实例4.

三方登录 - 华为登录

1.1. 开发准备 当应用需要使用以下开放能力的一种或多种时,为正常调试运行应用,需要预先添加公钥指纹 Account Kit(华为帐号服务)Call Kit(通话服务)Game Service Kit(游戏服务)Health Service Kit(运动健康服务)IAP Kit(应用内支付服务)Live View Kit(实况窗服务,当需要使用Push Kit时必须执行此步骤)Map Kit