【C++】每日一题 137 只出现一次的数字

news/2024/4/27 20:37:28

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。

你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。

#include <vector>int singleNumber(std::vector<int>& nums) {int ones = 0, twos = 0;for (int num : nums) {ones = (ones ^ num) & ~twos;twos = (twos ^ num) & ~ones;}return ones;
}

对于每一个整数,由于除了一个元素外,其余每个元素都出现了三次,我们可以考虑统计数组中所有元素的每一位的和并对 3 取模。结果应该是 3 的倍数加上单独出现的那个元素在该位上的值。

因此,我们可以遍历数组中所有元素的每一位,对每一位进行统计。因此定义两个变量 ones 和 twos,分别表示当前位上出现一次和两次的情况。如果某一位上出现了三次,则将 ones 和 twos 中对应的位清零。

最终,ones 中存储的就是只出现一次的那个元素。这样就能在线性时间复杂度和常数空间复杂度内找到只出现一次的元素。

这个算法的时间复杂度为 O(n),其中 n 是数组中元素的个数。算法需要对数组中的每个元素进行遍历,因此时间复杂度与数组的长度线性相关。

空间复杂度为 O(1),即常数级别的空间复杂度。算法只使用了常数个额外变量来存储 ones 和 twos,不随着输入规模的增加而变化。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

css3鼠标悬停图片特效,图片悬停效果源码

特效介绍 css3鼠标悬停图片特效,图片悬停效果源码&#xff0c;可以在网页上面作为自己的动态加载名片&#xff0c;放到侧边栏或者网站合适的位置即可 动态效果 代码下载 css3鼠标悬停图片特效,图片悬停效果源码

Python|OpenCV-基于OpenCV实现给图像增加噪点(11)

前言 本文是该专栏的第12篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 在图像处理中,给图像添加噪点是一个常见的预处理步骤,用于模拟真实世界中的噪声条件,从而评估或测试图像处理算法的性能。OpenCV是一个强大的计算机视觉库,它提供了许多函数和方法来处理…

外包干了5年,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入杭州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

【数据结构】String常量池

文章目录 String常量池一、常量池的概念二、常见的常量池三、字符串常量池&#xff08;StringTable&#xff09;1.String的创建过程2.intern方法 String常量池 一、常量池的概念 public static void main(String[] args) {String s1 "happy";String s2 "happ…

Python学习笔记(一)

一&#xff1a;安装Python&#xff08;省略&#xff09; 二&#xff1a;测试运行 三&#xff1a;Python解释器&#xff1a; 四&#xff1a;Python语法知识&#xff1a; 4.1&#xff1a;字面量&#xff1a; 4.2&#xff1a;注释&#xff1a; 4.3&#xff1a;变量 4.4&#xff…

基于spring boot的汽车4s店管理系统

摘 要 时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;汽车4s店管理系统当然不能排除在外。汽车4s店管理系统是在实际应用和软件工程的开发原理之上&#xff0c;运用java语言以及SpringBoot框架…