LeetCode 2965.找出缺失和重复的数字:小数据?我选择暴力(附优化方法清单:O(1)空间方法×3)

【LetMeFly】2965.找出缺失和重复的数字:小数据?我选择暴力(附优化方法清单:O(1)空间方法×3)

力扣题目链接:https://leetcode.cn/problems/find-missing-and-repeated-values/

给你一个下标从 0 开始的二维整数矩阵 grid,大小为 n * n ,其中的值在 [1, n2] 范围内。除了 a 出现 两次b 缺失 之外,每个整数都 恰好出现一次

任务是找出重复的数字a 和缺失的数字 b

返回一个下标从 0 开始、长度为 2 的整数数组 ans ,其中 ans[0] 等于 aans[1] 等于 b

 

示例 1:

输入:grid = [[1,3],[2,2]]
输出:[2,4]
解释:数字 2 重复,数字 4 缺失,所以答案是 [2,4] 。

示例 2:

输入:grid = [[9,1,7],[8,9,2],[3,4,6]]
输出:[9,5]
解释:数字 9 重复,数字 5 缺失,所以答案是 [9,5] 。

 

提示:

  • 2 <= n == grid.length == grid[i].length <= 50
  • 1 <= grid[i][j] <= n * n
  • 对于所有满足1 <= x <= n * nx ,恰好存在一个 x 与矩阵中的任何成员都不相等。
  • 对于所有满足1 <= x <= n * nx ,恰好存在一个 x 与矩阵中的两个成员相等。
  • 除上述的两个之外,对于所有满足1 <= x <= n * nx ,都恰好存在一对 i, j 满足 0 <= i, j <= n - 1grid[i][j] == x

解题方法:计数(模拟)

开辟一个 n 2 + 1 n^2+1 n2+1的数组,用来记录每个数分别出现了多少次。

遍历原始数组即可完成计数数组,遍历计数数组即可得到答案。

  • 时间复杂度 O ( n 2 ) O(n^2) O(n2)
  • 空间复杂度 O ( n 2 ) O(n^2) O(n2)

AC代码

C++
class Solution {
public:vector<int> findMissingAndRepeatedValues(vector<vector<int>>& grid) {vector<int> times(grid.size() * grid.size() + 1);for (vector<int>& line : grid) {for (int t : line) {times[t]++;}}vector<int> ans(2);for (int i = 1; i < times.size(); i++) {if (times[i] == 2) {ans[0] = i;}else if (times[i] == 0) {ans[1] = i;}}return ans;}
};

时间击败92.71%的提交,空间击败90.28%的提交。

其他方法

本题时间复杂度不可优化,说啥也得至少遍历一遍原始数组。如何优化空间复杂度呢?大致分为三种:

优化方法一:空间的原地使用:

例如 t t t出现过就将数组中第 t t t个元素置为负数,若某次将某元素置为负数时发现已经是负数了,则说明这个数出现了两次。到最后也没被置为负数的位置说明对应的数没有出现。

优化方法二:数学方法:

∑ i = 1 n 2 i − ∑ g r i d = b − a \sum_{i=1}^{n^2}i-\sum grid=b-a i=1n2igrid=ba,一个方程不足以解出两个变量,因此可以再加一个方程。

例如 ∑ i = 1 n 2 i 2 − ∑ i ∈ g r i d i 2 = b 2 − a 2 \sum_{i=1}^{n^2}i^2-\sum_{i\in grid} i^2=b^2-a^2 i=1n2i2igridi2=b2a2,联立两方程即可得到 a a a b b b的值。

优化方法三:位运算:

根据异或的性质,异或一个数偶数次相当于没有异或。因此假设异或grid中的每个元素再异或从1到 n 2 n^2 n2得到结果 t t t,则 t = a ⊕ b t=a\oplus b t=ab(相当于 a a a一共异或了3次而 b b b一共异或了1次)。

到这里很多同学都看出了这题本质和260. 只出现一次的数字 III相同。

如何拆分 a a a b b b?依据两个原则分别异或即可。假设 t t t二进制下第一个 1 1 1是第 2 2 2位,则所有数依据第 2 2 2位是否为 1 1 1分为两种。每组中所有元素相互异或,最终的两个结果就是 a a a b b b

这里“所有数”是指 1 1 1 n 2 n^2 n2的所有数以及原始数组中的所有数。

为什么这样能将 a a a b b b分开?因为根据异或结果 t t t可得, a a a b b b二进制下第 2 2 2位绝对不同,因此 a a a b b b会被分到两个不同的组中。每个组中除了 a a a b b b都出现偶数次,因此两组的异或结果就是 a a a b b b

End

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://letmefly.blog.csdn.net/article/details/139357662

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

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

相关文章

Cholesky分解(A=L * L^T)

Cholesky分解是一种用于解线性方程组和计算矩阵平方根的算法&#xff0c;特别适用于对称正定矩阵。这种方法相比于其他解法&#xff08;如高斯消元法&#xff09;在数值稳定性上通常有更好的表现&#xff0c;并且能够有效地利用矩阵的对称性和正定性。下面简要介绍如何使用Chol…

python-双胞胎字符串

[问题描述]&#xff1a;给定两个字符串s和t&#xff0c;每次可以任意交换s的奇数位和偶数位的字符&#xff0c;即奇数位的字符可以与任意其它奇数位的字符交换&#xff0c;偶数位的字符同样也可以与任意偶数位的字符的字符交换&#xff0c;问能否在有限的次数的交换下使s变为t?…

智能售货机加盟新契机

加盟智能售货机业务&#xff0c;尤其是在当前技术迭代迅速与市场需求高涨的背景下&#xff0c;正成为众多创业者积极探索的领域。以重庆臻奶惠为代表的企业&#xff0c;正利用其在智能科技与支付资讯的深厚底蕴&#xff0c;为有意涉足该行业的加盟者铺设了一条既稳健又具前瞻性…

2024年5月31日 (周五) 叶子游戏新闻

《Granblue Fantasy: Relink》版本更新 新增可操控角色及功能世嘉股份有限公司现已公开《Granblue Fantasy: Relink》&#xff08;以下简称 Relink&#xff09;免费版本更新ver.1.3.1于5月31日&#xff08;周五&#xff09;上线的消息。该作是由Cygames Inc.&#xff08;下称Cy…

【CTF Web】BUUCTF BUU LFI COURSE 1 Writeup(代码审计+PHP+文件包含漏洞)

BUU LFI COURSE 1 1 点击启动靶机。 解法 <?php /*** Created by PhpStorm.* User: jinzhao* Date: 2019/7/9* Time: 7:07 AM*/highlight_file(__FILE__);if(isset($_GET[file])) {$str $_GET[file];include $_GET[file]; }如果GET请求中接收到file参数&#xff0c;就会…

刷代码随想录有感(87):贪心算法——K次取反后的最大化数组和

题干&#xff1a; 代码&#xff1a; class Solution { public:static bool cmp(int a, int b){return abs(a) > abs(b);}int largestSumAfterKNegations(vector<int>& nums, int k) {sort(nums.begin(), nums.end(), cmp);for(int i 0; i < nums.size(); i){…

010.编译指纹浏览器-绕过常见无头检测

修改webdriver 打开文件 third_party\blink\renderer\core\frame\navigator.cc //bool Navigator::webdriver() const { // if (RuntimeEnabledFeatures::AutomationControlledEnabled()) // return true; // // bool automation_enabled false; // probe::ApplyAutom…

使用clip模型计算图文相似度

使用clip模型计算图文相似度 clip模型模型架构训练过程应用场景clip安装 计算图文相似度 clip模型 CLIP (Contrastive Language-Image Pretraining) 是由 OpenAI 开发的一种深度学习模型&#xff0c;旨在将自然语言处理和计算机视觉任务结合起来。它通过一种名为对比学习&…

Springboot+vue二手房交易管理系统

Springbootvue二手房交易管理系统&#xff0c;项目用mybatis与数据库&#xff0c;数据库为mysql&#xff0c;16个表结构。有问题直接加我询问&#xff0c;我会一直在线哒。 功能如下&#xff1a; 房东管理 用户管理 房源信息管理&#xff08;可预约和查看评论&#xff09; 看房…

【LLM第7篇】transformer跟bert、gpt、大模型的联系

上一篇讲了transformer的原理&#xff0c;接下来&#xff0c;看看它的衍生物们。 Transformer基本架构 Transformer模型主要由两部分组成&#xff1a;编码器&#xff08;Encoder&#xff09;和解码器&#xff08;Decoder&#xff09;。编码器负责处理输入序列&#xff0c;将其…

Java 编程思想:深入探索与实际应用

Java 编程思想&#xff1a;深入探索与实际应用 Java 编程&#xff0c;作为一门历史悠久且广泛应用于各个领域的编程语言&#xff0c;其背后蕴含着丰富的编程思想。本文将围绕四个方面、五个方面、六个方面和七个方面&#xff0c;对 Java 编程思想进行深入探讨&#xff0c;旨在…

iOS Hittest 机制和实际应用

Hittest 机制原理 hitTest的原理就是&#xff0c;当我们点击的时候&#xff0c;会触发 window的 hittest方法&#xff0c;在该方法中会首先使用point inside方法判断 点击的地方是否在window范围内&#xff0c;如果在的话&#xff0c;就倒序遍历姿子视图&#xff0c;然后将poi…

MiniMax公司介绍

MiniMax是一家专注于通用人工智能技术的科技公司&#xff0c;成立于2021年12月。公司致力于成为通用人工智能时代基础设施建设者和内容应用创造者&#xff0c;积极投身于中国人工智能技术高速发展的时代大潮。MiniMax的团队由多位在人工智能领域有着丰富经验的专家组成&#xf…

NKCTF 2024 webshell_pro

还是正常的HTTP流量 既然是webshell一定是看POST流量 对每一个进行追踪tcp流 最终发现 在 流9 (tcp.stream eq 9)存在 base32 -->base64的流量的加密逻辑 import base64import libnum from Crypto.PublicKey import RSApubkey """-----BEGIN PUBLIC KEY…

文刻创作ai工具在哪下载

文刻创作ai工具是一种基于人工智能技术开发的软件工具&#xff0c;旨在辅助用户进行文创作品的创作和编辑。 领取激活方式&#xff1a;https://qvfbz6lhqnd.feishu.cn/wiki/HsY4wmoffiNp4FkB2AbcpL4tn6d 该工具通过自然语言处理、机器学习等技术&#xff0c;可以生成具有一定创…

CMS和G1谁是赢家

JVM存在有CMS&#xff08;Concurrent Mark Sweep&#xff09;垃圾收集器和G1&#xff08;Garbage First&#xff09;垃圾收集器&#xff0c;它们的优缺点对比如下&#xff1a; 一、CMS&#xff1a; 1.特点 1&#xff09;以获取最短回收停顿时间为目标&#xff0c;适用于对响应性…

MyBatis源码分析--02:SqlSession建立过程

我们再来看看MyBatis使用流程&#xff1a; InputStream inputStream Resources.getResourceAsStream("myBatis_config.xml"); SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream); SqlSession session sqlSessionFactory.op…

Linux主机安全可视化运维(免费方案)

本文介绍如何使用免费的主机安全软件,在自有机房或企业网络实现对Linux系统进行可视化“主机安全”管理。 一、适用对象 本文适用于个人或企业内的Linux服务器运维场景,实现免费、高效、可视化的主机安全管理。提前发现主机存在的安全风险,全方位实时监控主机运行时入侵事…

【惯性传感器imu】—— WHEELTEC的惯导模块的imu的驱动安装配置和运行

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、IMU驱动安装1. 安装依赖2. 源码的下载3. 编译源码(1) 配置固定串口设备(2) 修改luanch文件(3) 编译 二、启动IMU1. 运行imu2. 查看imu数据 总结 前言 WHEE…

C#WPF数字大屏项目实战02--主窗体布局

1、主窗体起始属性 设置有关属性如下&#xff1a; WindowStyle"None"-》无边框 AllowsTransparency"True" -》允许透明 WindowStartupLocation"CenterScreen"-》启动时位于屏幕中间 FontFamily"Microsoft YaHei"-》字体微软雅黑 …