【每日一句】只出现一次的数
文章目录
- Tag
- 题目来源
- 题目解读
- 解题思路
- 方法一:位运算
- 其他语言
- C
- python3
- 写在最后
Tag
【位运算-异或和】【数组】【2023-10-14】
题目来源
136. 只出现一次的数字
题目解读
给你一个数组,找出数组中只出现一次的元素。题目保证仅有一个元素出现一次,其余的元素都是出现两次的。
要求解题方法的时间复杂度为线性的,空间复杂度为常数级别。
解题思路
如果不考虑时间复杂度与空间复杂度,本题有多种解决方法,比如哈希表记录每个元素出现的次数;比如使用集合记录元素,如果遇到第二次个元素,则从集合中移除遍历到的元素,最后集合中剩余的就是仅出现一次的元素。还有一种方法就是将数组中的元素全部放入集合中,利用集合来去重,集合中的数都是出现过一次的数,现在将集合中元素和的二倍减去数组中元素和,得到的结果就是数组中仅出现一次的元素。
本题的最优解法是位运算的方法。
方法一:位运算
本题利用的是位运算的异或和知识,我们知道:
- 两个相同的数的异或和为
0; - 任何数与
0异或,结果不变; - 异或操作具有交换性。
利用以上异或和的三条性质,我们可以这样解决本题:
- 维护一个结果变量
res,初始值为0; - 遍历数组中的所有元素,与
0进行异或操作,相同元素之间的异或和为0,最后只剩下0数组中的出现过一次的数异或,得到的就是数组中的出现过一次的数; - 返回
res。
实现代码
class Solution {
public:int singleNumber(vector<int>& nums) {int res = 0;for (int num : nums) {res ^= num;}return res;}
};
复杂度分析
时间复杂度: O ( n ) O(n) O(n), n n n 为数组 nums 的长度。
空间复杂度: O ( 1 ) O(1) O(1)。
其他语言
C
int singleNumber(int* nums, int numsSize){int res = 0;for (int i = 0; i < numsSize; ++i) {res ^= nums[i];}return res;
}
python3
class Solution:def singleNumber(self, nums: List[int]) -> int:ret = 0for i in nums:ret ^= ireturn ret
写在最后
如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。
如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。
最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 👍 哦。
相关文章:
【每日一句】只出现一次的数
文章目录 Tag题目来源题目解读解题思路方法一:位运算 其他语言Cpython3 写在最后 Tag 【位运算-异或和】【数组】【2023-10-14】 题目来源 136. 只出现一次的数字 题目解读 给你一个数组,找出数组中只出现一次的元素。题目保证仅有一个元素出现一次&a…...
GDB调试程序常用命令
编译文件 g -g -o test test.cpp(注意:GDB调试的前提是在编译时加上-g参数.) 启动gdb # 方法一 gdb test # 方法二 gdb file test 设置断点 tbreak:设置临时断点,仅在第一次触发后失效。 watch:设置观察点,监控变量的…...
C语言,求两个数的二进制表达中,有多少个位数不同
以前我的博客中写过一篇求二进制的1的个数的博客,里面用按位与1的方式来判断位数是否为一。 如代码所示: #include <stdio.h> int num(int n) {int a 0;int i 0;while (i < 32){a a (n & 1);n n >> 1;i;}return a; } int main…...
解决Win10电脑无线网卡的移动热点无法开启问题
一、目的 利用无线网卡连接网络,然后又用无线网卡通过移动热点分享该网络。 移动热点,简单地说,就是将台式机或笔记本的 Internet 连接转化成 WIFI 信号以供移动设备无线上网的功能,硬件前提是电脑须安装有无线网卡。 二、问题 …...
Spring framework Day10:JSR330注入注解
前言 JSR330是Java社区标准化进程(Java Community Process,简称JCP)中的一个规范,全名为"Dependency Injection for Java",即Java的依赖注入规范。它定义了一组注解和相关的规范,用于实现依赖注…...
Java开发中List数据量大,需要分片批次处理
在开发过程中可能会遇到需要处理的List数据量过大,可以选择分批处理的方式对大量数据进行处理。 1、使用 apache 的工具包 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><v…...
Apache Doris 2.0.2 版本正式发布!
峰会官网已上线,最新议程请关注:doris-summit.org.cn 点击报名 亲爱的社区小伙伴们,Apache Doris 2.0.2 版本已于 2023 年 10 月 6 日正式发布,该版本对多个功能进行了更新优化,旨在更好地满足用户的需求。有 92 位贡献…...
transformers架构实现
目录 架构代码如下 模型打印如下 架构代码如下 import numpy as np from torch.autograd import Variable import copy from torch import softmax import math import torch import torch.nn.functional as F import torch.nn as nn # 构建Embedding类来实现文本嵌入层 class…...
C++类型推导
这里对C的类型推导方式进行一次全面的总结。 C中有三种类型推导的方式,分别是模板、auto以及decltype()。以下分别介绍这三种方式的同异。 一 模板 假设有这样的函数模板和这样的调用: template<typename T> void f(ParamType param);f(expr);…...
Open3D(C++) SVD分解求两个点云的变换矩阵
目录 一、算法原理二、代码实现三、结果展示四、相关链接一、算法原理 计算两个点云的质心计算中心化向量计算协方差矩阵奇异值分解,求解旋转矩阵 R R R计算平移向量 t t...
rtmp htttp推流Windows桌面到srs进行播放
推流命令: ffmpeg -f gdigrab -framerate 30 -i desktop -c:v libx264 -preset ultrafast -tune zerolatency -pix_fmt yuv420p -f flv rtmp://xxx.xxx.xxxx.xx/live/livestream 后面是推流地址 推流后的播放地址为: http://xxxxxx:8080/live/livestream.flv 可以写一个…...
NSSCTF做题(9)
[GDOUCTF 2023]<ez_ze> 看见输入框而且有提示说是ssti注入 输入{{7*7}} 试试,发现报错 输入{%%}发现了是jinja2模板 找到关键函数 Python SSTI利用jinja过滤器进行Bypass ph0ebuss Blog 原理见这篇文章,这里直接给出payload {%set ninedict(aaa…...
【09】基础知识:React组件的生命周期
组件从创建到死亡它会经历一些特定的阶段。 React 组件中包含一系列勾子函数(生命周期回调函数 <> 生命周期钩子函数 <> 生命周期函数 <> 生命周期钩子),会在特定的时刻调用。 我们在定义组件时,会在特定的生…...
Pytorch之ConvNeXt图像分类
文章目录 前言一、ConvNeXt设计决策1.设计方案2.Training Techniques3.Macro Design🥇Changing stage compute ratio🥈Change stem to "Patchify" 4.ResNeXt-ify5. Inverted Bottleneck6.Large Kernel Size7.Micro Design✨Replacing ReLU wit…...
Linux系统编程:makefile以及文件系统编程
增量编译概念 首先回顾一下我们之前写的各种gcc指令用来执行程序: 可以看见非常繁琐,两个文件就要写这么多,那要是成百上千岂不完蛋。 所以为了简化工作量,很自然的想到了将这些命令放在一起使用脚本文件来一键执行,…...
《动手学深度学习 Pytorch版》 8.5 循环神经网络的从零开始实现
%matplotlib inline import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2lbatch_size, num_steps 32, 35 train_iter, vocab d2l.load_data_time_machine(batch_size, num_steps) # 仍然使用时间机器数据集8.…...
写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换
我们这里是利用按位与来计算的 我们可以想想怎么保留偶数上的位?我们可以利用0x55555555按位与上这个数就保留了偶数 我们知道,16进制0x55555555转换为二进制就是0x01010101010101010101010101010101 我们知道,二进制每一位,如…...
Zabbix监控系统详解2:基于Proxy分布式实现Web应用监控及Zabbix 高可用集群的搭建
文章目录 1. zabbix-proxy的分布式监控的概述1.1 分布式监控的主要作用1.2 监控数据流向1.3 构成组件1.3.1 zabbix-server1.3.2 Database1.3.3 zabbix-proxy1.3.4 zabbix-agent1.3.5 web 界面 2. 部署zabbix代理服务器2.1 前置准备2.2 配置 zabbix 的下载源,安装 za…...
docker 安装oracle
拉取镜像 拉取oracle_11g镜像 拉取oracle镜像(oracle 11.0.2 64bit 企业版 实例名: helowin) Oracle主要在Docker基础上安装,安装环境注意空间和内存,Oracle是一个非常庞大的一个软件, 建议使用网易镜像或阿里镜像网站这里以oracle 11.0.2…...
C++ vector 自定义排序规则(vector<vector<int>>、vector<pair<int,int>>)
vector< int > vector<int> vec{1,2,3,4};//默认从小到大排序 1234 sort(vec.begin(),vec.end()); //从大到小排序 4321 sort(vec.begin(),vec.end(),greater<int>());二维向量vector<vector< int >> vector<vector<int>> vec{{0…...
Qwen2.5-Coder-1.5B应用案例:自动生成Bash脚本处理日志文件
Qwen2.5-Coder-1.5B应用案例:自动生成Bash脚本处理日志文件 1. 日志处理场景与痛点分析 1.1 运维工程师的日常挑战 在服务器运维工作中,日志分析是最常见也最耗时的任务之一。想象一下这样的场景: 你需要检查10台服务器上50个不同的服务日…...
Android定时开关机的5种实现方式对比:哪种最适合你的设备?
Android定时开关机技术全景解析:从系统API到硬件层控制的深度实践 在智能设备管理领域,定时开关机功能一直是工业控制、物联网终端和定制化Android设备的核心需求之一。想象一下,你正在部署一批智能售货机,需要在营业时间自动唤醒…...
保姆级教程:在Ubuntu 20.04上搞定Montreal Forced Aligner (MFA) 2.0安装与验证
保姆级教程:在Ubuntu 20.04上搞定Montreal Forced Aligner (MFA) 2.0安装与验证 语音对齐技术正在成为语音处理领域的基础工具,而Montreal Forced Aligner(MFA)作为当前最流行的开源解决方案,其2.0版本带来了显著的性…...
从LVGL V7.11到V9.1:我维护中文文档这三年踩过的坑与实战经验
从LVGL V7.11到V9.1:一个中文文档维护者的技术叙事 三年前,当我第一次在嵌入式项目中尝试使用LVGL时,完全没想到这个轻量级图形库会成为我技术生涯中的重要篇章。作为国内最早系统维护LVGL中文文档的开发者之一,这段跨越三个大版本…...
Honey Select 2终极增强补丁:3分钟快速配置完整模组生态
Honey Select 2终极增强补丁:3分钟快速配置完整模组生态 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 你是否曾为《Honey Select 2》的模组安装繁…...
软件测试之压力测试总结
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是压力测试软件测试中:压力测试(Stress Test),也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件…...
Virtual-Display-Driver:Windows虚拟显示器的全能解决方案深度解析
Virtual-Display-Driver:Windows虚拟显示器的全能解决方案深度解析 【免费下载链接】Virtual-Display-Driver Add virtual monitors to your windows 10/11 device! Works with VR, OBS, Sunshine, and/or any desktop sharing software. 项目地址: https://gitco…...
Delphi网络编程实战:UDP通信与多线程网络优化详解
前两篇文章分别讲解了Delphi中基于Indy组件的TCP点对点通信、HTTP/HTTPS接口交互,覆盖了可靠连接、Web对接两大常用场景。本篇将深入讲解UDP通信,同时补充多线程网络编程、数据传输防护、常见故障排查等进阶内容,补齐Delphi网络开发的核心模块…...
局域网内Windows时间同步配置
本文详细介绍了如何配置NTP服务器和工作站计算机进行时间同步,包括在服务器上启用NTP服务,调整同步设置,以及在海康威视录像机上的应用。同时提醒注意防火墙配置问题。 一、配置NTP服务器 1、在局域网内找一台时间可靠的计算机或服务器 做为N…...
当企业规模增长后,IT管理为什么越来越“失控”?
在企业早期,IT 管理往往是“够用就好”。 一套简单的工单工具、一份资产台账、几个人工流程,就足以支撑日常运转。但当企业规模逐渐扩大,员工数量增长、系统复杂度提升、业务节奏加快时,原本“还能用”的 IT 管理方式,…...
