1380. 矩阵中的幸运数

简介: 给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。

给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。


幸运数是指矩阵中满足同时下列两个条件的元素:


   在同一行的所有元素中最小

   在同一列的所有元素中最大


示例 1:


输入:matrix = [[3,7,8],[9,11,13],[15,16,17]]

输出:[15]

解释:15 是唯一的幸运数,因为它是其所在行中的最小值,也是所在列中的最大值。


示例 2:


输入:matrix = [[1,10,4,2],[9,3,8,7],[15,16,17,12]]

输出:[12]

解释:12 是唯一的幸运数,因为它是其所在行中的最小值,也是所在列中的最大值。


示例 3:


输入:matrix = [[7,8],[1,2]]

输出:[7]


提示:


   m == mat.length

   n == mat[i].length

   1 <= n, m <= 50

   1 <= matrix[i][j] <= 10^5

   矩阵中的所有元素都是不同的


javascript



/**
 * @param {number[][]} matrix
 * @return {number[]}
 */
var luckyNumbers = function (matrix) {
  let minCol = matrix.map(row=>Math.min(...row))
  let maxRow = matrix[0].map((item,index)=>Math.max(...matrix.map(row=>row[index])))
  return maxRow.filter(v=>minCol.includes(v))
};


python



class Solution(object):
    def luckyNumbers (self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: List[int]
        """
        r,c = len(matrix),len(matrix[0])
        rMin, cMax = [10**9] * r, [0] * c
        for i in range(c):
            for j in range(r):
                rMin[i] = min(rMin[i], matrix[i][j])
                cMax[j] = max(cMax[j], matrix[i][j])
        ans = list()
        for i in range(r):
            for j in range(c):
                if matrix[i][j] == rMin[i] and matrix[i][j] == cMax[j]:
                    ans.append(matrix[i][j])
        return ans


相关文章
|
机器学习/深度学习 数据采集 搜索推荐
多模型DCA曲线:如何展现和解读乳腺癌风险评估模型的多样性和鲁棒性?
多模型DCA曲线:如何展现和解读乳腺癌风险评估模型的多样性和鲁棒性?
551 1
|
11月前
|
安全 Android开发 数据安全/隐私保护
Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
527 12
Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
|
6月前
|
Kubernetes API Go
利用k8s client-go库创建CRD的informer的操作流程
以上步骤将创建一个针对特定 CRD 的 informer,该 informer 会触发相应的事件处理程序以便您对事件进行响应。这是一个高级的方案,需要对 Go 编程语言和 Kubernetes 内部机制有深入的了解。在应用之前,强烈建议深入了解 Kubernetes client-go 库以及其工作原理。
196 9
|
人工智能 并行计算 PyTorch
ViewExtrapolator:南洋理工联合UCAS团队推出的新型视图合成方法
南洋理工大学与UCAS团队联合推出了一种新型视图合成方法——ViewExtrapolator。该方法基于稳定视频扩散(SVD)技术,能够在不进行微调的情况下,高效生成超出训练视图范围的新视角图像,显著减少伪影,提升视觉质量。ViewExtrapolator具有广泛的应用前景,尤其在虚拟现实、3D内容创建、电影制作等领域。
196 1
ViewExtrapolator:南洋理工联合UCAS团队推出的新型视图合成方法
|
测试技术 持续交付 Apache
性能怪兽来袭!Python+JMeter+Locust,让你的应用性能飙升🦖
【8月更文挑战第5天】随着互联网应用规模增长,性能测试至关重要。本文介绍如何利用Python结合Apache JMeter和Locust构建高效可定制的性能测试框架。JMeter广泛用于负载测试,通过模拟大量虚拟用户并发访问来评估性能。Locust基于Python,通过编写简单脚本模拟HTTP请求,特别适合Web应用测试,比JMeter更灵活易扩展。Python作为胶水语言简化测试脚本编写并流畅自动化流程。文章提供JMeter命令行测试和Locust脚本示例,并展示如何用Python自动化执行和整合测试结果,最终帮助应用在高负载下稳定运行。
370 1
|
自然语言处理 API 开发工具
初识langchain:LLM大模型+Langchain实战[qwen2.1、GLM-4]+Prompt工程
【7月更文挑战第6天】初识langchain:LLM大模型+Langchain实战[qwen2.1、GLM-4]+Prompt工程
初识langchain:LLM大模型+Langchain实战[qwen2.1、GLM-4]+Prompt工程
|
数据采集 前端开发 测试技术
Selenium中定位元素的9种方法
在Selenium中,定位页面元素是自动化测试和网页爬虫的基础。常用的9种元素定位方法包括:ID、Name、Class Name、Tag Name、CSS Selector、XPath、Link Text、Partial Link Text,以及XPath和CSS选择器的组合使用。每种方法各有优劣,建议根据页面的具体情况和元素的属性选择最合适的方法,并使用显式等待确保元素可用。
1867 5
|
JSON Rust 监控
公司电脑监控软件的Rust编程实现与安全性提升
这篇文章介绍了如何使用Rust编程语言开发一个基础的企业电脑监控软件,包括初始化项目、捕获键盘输入、监控网络活动。同时,文章强调了提升安全性的重要性,提出了数据加密(如AES)和完整性校验(如SHA-256)的方法,并展示了如何将监控数据自动提交到远程服务器。通过Rust,开发者能创建高效且安全的监控解决方案。
581 2
|
机器学习/深度学习 人工智能 搜索推荐
智能CRM系统排名2024:AI技术如何提升客户管理
在数字化时代,人工智能(AI)技术正逐渐成为企业提升客户管理能力的关键因素。智能CRM系统通过集成AI技术,不仅能够自动化日常任务,还能提供深入的客户洞察,从而帮助企业实现更高效的销售和更个性化的客户服务。AI技术在CRM系统中的应用包括:24/7的自动化客户服务、客户行为分析、个性化推荐以及销售预测和管道管理。根据2024年市场表现和用户反馈,纷享销客、用友CRM、金蝶CRM、悟空CRM、普华基石CRM、珍客CRM、八百客CRM和销帮帮CRM等智能CRM系统表现出色。其中,纷享销客凭借先进的AI技术成为行业领导者。企业应积极探索AI与CRM的集成,实现客户管理的数字化转型。
|
C语言
汉诺塔————经典递归问题(C语言实现)
汉诺塔————经典递归问题(C语言实现)
496 0