当前位置: 首页 > news >正文

【每日一句】只出现一次的数

文章目录

  • 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题目来源题目解读解题思路方法一&#xff1a;位运算 其他语言Cpython3 写在最后 Tag 【位运算-异或和】【数组】【2023-10-14】 题目来源 136. 只出现一次的数字 题目解读 给你一个数组&#xff0c;找出数组中只出现一次的元素。题目保证仅有一个元素出现一次&a…...

GDB调试程序常用命令

编译文件 g -g -o test test.cpp(注意&#xff1a;GDB调试的前提是在编译时加上-g参数.) 启动gdb # 方法一 gdb test # 方法二 gdb file test 设置断点 tbreak&#xff1a;设置临时断点&#xff0c;仅在第一次触发后失效。 watch&#xff1a;设置观察点&#xff0c;监控变量的…...

C语言,求两个数的二进制表达中,有多少个位数不同

以前我的博客中写过一篇求二进制的1的个数的博客&#xff0c;里面用按位与1的方式来判断位数是否为一。 如代码所示&#xff1a; #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电脑无线网卡的移动热点无法开启问题

一、目的 利用无线网卡连接网络&#xff0c;然后又用无线网卡通过移动热点分享该网络。 移动热点&#xff0c;简单地说&#xff0c;就是将台式机或笔记本的 Internet 连接转化成 WIFI 信号以供移动设备无线上网的功能&#xff0c;硬件前提是电脑须安装有无线网卡。 二、问题 …...

Spring framework Day10:JSR330注入注解

前言 JSR330是Java社区标准化进程&#xff08;Java Community Process&#xff0c;简称JCP&#xff09;中的一个规范&#xff0c;全名为"Dependency Injection for Java"&#xff0c;即Java的依赖注入规范。它定义了一组注解和相关的规范&#xff0c;用于实现依赖注…...

Java开发中List数据量大,需要分片批次处理

在开发过程中可能会遇到需要处理的List数据量过大&#xff0c;可以选择分批处理的方式对大量数据进行处理。 1、使用 apache 的工具包 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><v…...

Apache Doris 2.0.2 版本正式发布!

峰会官网已上线&#xff0c;最新议程请关注&#xff1a;doris-summit.org.cn 点击报名 亲爱的社区小伙伴们&#xff0c;Apache Doris 2.0.2 版本已于 2023 年 10 月 6 日正式发布&#xff0c;该版本对多个功能进行了更新优化&#xff0c;旨在更好地满足用户的需求。有 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中有三种类型推导的方式&#xff0c;分别是模板、auto以及decltype()。以下分别介绍这三种方式的同异。 一 模板 假设有这样的函数模板和这样的调用&#xff1a; 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}} 试试&#xff0c;发现报错 输入{%%}发现了是jinja2模板 找到关键函数 Python SSTI利用jinja过滤器进行Bypass ph0ebuss Blog 原理见这篇文章&#xff0c;这里直接给出payload {%set ninedict(aaa…...

【09】基础知识:React组件的生命周期

组件从创建到死亡它会经历一些特定的阶段。 React 组件中包含一系列勾子函数&#xff08;生命周期回调函数 <> 生命周期钩子函数 <> 生命周期函数 <> 生命周期钩子&#xff09;&#xff0c;会在特定的时刻调用。 我们在定义组件时&#xff0c;会在特定的生…...

Pytorch之ConvNeXt图像分类

文章目录 前言一、ConvNeXt设计决策1.设计方案2.Training Techniques3.Macro Design&#x1f947;Changing stage compute ratio&#x1f948;Change stem to "Patchify" 4.ResNeXt-ify5. Inverted Bottleneck6.Large Kernel Size7.Micro Design✨Replacing ReLU wit…...

Linux系统编程:makefile以及文件系统编程

增量编译概念 首先回顾一下我们之前写的各种gcc指令用来执行程序&#xff1a; 可以看见非常繁琐&#xff0c;两个文件就要写这么多&#xff0c;那要是成百上千岂不完蛋。 所以为了简化工作量&#xff0c;很自然的想到了将这些命令放在一起使用脚本文件来一键执行&#xff0c…...

《动手学深度学习 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.…...

写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换

我们这里是利用按位与来计算的 我们可以想想怎么保留偶数上的位&#xff1f;我们可以利用0x55555555按位与上这个数就保留了偶数 我们知道&#xff0c;16进制0x55555555转换为二进制就是0x01010101010101010101010101010101 我们知道&#xff0c;二进制每一位&#xff0c;如…...

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 的下载源&#xff0c;安装 za…...

docker 安装oracle

拉取镜像 拉取oracle_11g镜像 拉取oracle镜像(oracle 11.0.2 64bit 企业版 实例名: helowin) Oracle主要在Docker基础上安装&#xff0c;安装环境注意空间和内存&#xff0c;Oracle是一个非常庞大的一个软件&#xff0c; 建议使用网易镜像或阿里镜像网站这里以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…...

SMR实战:如何将GWAS数据快速转换为BESD格式(附常见错误排查)

SMR实战&#xff1a;GWAS数据高效转换为BESD格式的完整指南与深度排错手册 在生物信息学研究中&#xff0c;基于汇总数据的孟德尔随机化&#xff08;Summary-data-based Mendelian Randomization, SMR&#xff09;已成为探索基因表达数量性状位点&#xff08;eQTL&#xff09;与…...

Z-Image-Turbo_Sugar脸部Lora部署案例:科研团队构建可复现实验人脸数据集

Z-Image-Turbo_Sugar脸部Lora部署案例&#xff1a;科研团队构建可复现实验人脸数据集 1. 项目背景与价值 在计算机视觉和人工智能研究领域&#xff0c;高质量、标准化的人脸数据集对于模型训练和算法验证至关重要。传统的人脸数据收集面临诸多挑战&#xff1a;数据隐私问题、…...

800元打造你的第一个自平衡机器人:Cubli Mini终极搭建指南

800元打造你的第一个自平衡机器人&#xff1a;Cubli Mini终极搭建指南 【免费下载链接】Cubli_Mini 项目地址: https://gitcode.com/gh_mirrors/cu/Cubli_Mini 想要亲手制作一个炫酷的自平衡机器人&#xff0c;但又担心成本太高、技术太难&#xff1f;Cubli Mini正是为…...

C++ 网络服务端主线:从线程池到 Reactor 的完整路线图

一、为什么要写这个系列&#xff1f; 前面我已经把 C 并发基础和线程池完整走了一遍&#xff1a; std::threadstd::mutexstd::condition_variablestd::atomic手写线程池future / 拒绝策略 / 优雅关闭 但到这里&#xff0c;其实还只停留在&#xff1a; 并发组件层 也就是说&a…...

从理论到面包板:手把手搭建Series-Shunt反馈放大器(含阻抗匹配避坑指南)

从理论到面包板&#xff1a;手把手搭建Series-Shunt反馈放大器&#xff08;含阻抗匹配避坑指南&#xff09; 在电子工程实践中&#xff0c;反馈放大器设计是模拟电路领域的核心技能之一。Series-Shunt结构因其出色的电压放大特性和相对简单的实现方式&#xff0c;成为初学者入门…...

告别重复劳动:用快马生成deerflow式工作流,提升开发效率十倍

最近在尝试优化日常开发流程时&#xff0c;发现很多重复性的代码检查工作特别耗时。于是研究了下如何用InsCode(快马)平台快速搭建一个deerflow风格的自动化工具&#xff0c;效果出乎意料的好。这里分享下具体实现思路和体验。 为什么需要自动化工作流 每次提交代码前&#x…...

终极指南:快速掌握OpenNI2深度相机开发框架

终极指南&#xff1a;快速掌握OpenNI2深度相机开发框架 【免费下载链接】OpenNI2 项目地址: https://gitcode.com/gh_mirrors/op/OpenNI2 OpenNI2是一个功能强大的开源跨平台框架&#xff0c;专门用于深度相机和传感器设备的驱动开发与应用程序构建。这个完整的自然交互…...

PUBG罗技鼠标宏:告别压枪困扰的终极解决方案

PUBG罗技鼠标宏&#xff1a;告别压枪困扰的终极解决方案 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中的武器后坐力而烦恼…...

攻克Switch 19.0.1系统Atmosphere启动故障:从诊断到优化的完整方案

攻克Switch 19.0.1系统Atmosphere启动故障&#xff1a;从诊断到优化的完整方案 【免费下载链接】Atmosphere Atmosphre is a work-in-progress customized firmware for the Nintendo Switch. 项目地址: https://gitcode.com/GitHub_Trending/at/Atmosphere 在Switch主机…...

Inconsolata字体深度解析:从代码美学到专业排版的完整方案

Inconsolata字体深度解析&#xff1a;从代码美学到专业排版的完整方案 【免费下载链接】Inconsolata Development repo of Inconsolata Fonts by Raph Levien 项目地址: https://gitcode.com/gh_mirrors/in/Inconsolata 在编程世界中&#xff0c;字体的选择远不止是审美…...