C++ 习题精选(3)——只出现一次的数字

目录

  • 1. 只出现一次的数字 I
  • 2. 只出现一次的数字 II

1. 只出现一次的数字 I

题目描述:给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度(O(n))的算法来解决此问题,且该算法只使用常量额外空间(O(1))。

示例 1 :
输入:nums = [2,2,1]
输出:1

示例 2 :
输入:nums = [4,1,2,1,2]
输出:4

示例 3 :
输入:nums = [1]
输出:1

提示:
1 <= nums.length <= 3 * 104
-3 * 104 <= nums[i] <= 3 * 104
除了某个元素只出现一次以外,其余每个元素均出现两次。

题目链接:https://leetcode.cn/problems/single-number/description/?clienttype=8&version=7.40.0.113&from=win32_yunguanjia&channel=00000000000000000000000040000001&privilege=&pri_extra=

答:解题思路:非空数组中除一个元素出现一次外,其余元素均出现两次。由于相同的数异或为0,而其他数与0异或不变。所以,遍历数组把所有数异或一遍,出现两次的数都异或为0了,则结果为只出现一次的元素。

代码如下: 由于作者最近在学习STL,所以代码中使用的都是迭代器,大家看不习惯可以点击链接看别的代码。

class Solution {
public:int singleNumber(vector<int>& nums) {// 所需变量int key = 0;  // 存储只出现一次的数// 使用迭代器遍历数组,每个元素相互亦或vector<int>::iterator begin = nums.begin();vector<int>::iterator end = nums.end();while (begin != end){// 当前元素亦或key ^= *begin;// 下一个元素++begin;}// 输出return key;}
};

2. 只出现一次的数字 II

题目描述:给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法(O(n))且使用常数级空间(O(1))来解决此问题。

示例 1:
输入:nums = [2,2,3,2]
输出:3

示例 2:
输入:nums = [0,1,0,1,0,1,99]
输出:99

提示:
1 <= nums.length <= 3 * 104
-231 <= nums[i] <= 231 - 1
nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次

题目链接: https://leetcode.cn/problems/single-number-ii/?clienttype=8&version=7.40.0.113&from=win32_yunguanjia&channel=00000000000000000000000040000001&privilege=&pri_extra=

答:解题思路:首先,数组的类型为int,所以每个数有32位,而其他数都是3对出现的,所以32位中,为1的位的次数要么是3n,要么是3n+1,而出现次数为3n+1则是所求只出现1次的数的为1位,出现次数为3n则是所求只出现1次的数的为0位。然后,通过与1异或还原为1的位。

代码如下:

class Solution {
public:int singleNumber(vector<int>& nums) {// 创建一个包含32个元素的int数组,遍历数组存储32位数中每位上1的出现次数int times_per_bit[32] = { 0 };int size = nums.size();for (int i = 0; i < size; ++i){// 存储每位数1出现的次数for (int j = 0; j < 32; ++j){// 判断本位是否为1if (nums[i] & (1 << j)){// 次数加1++times_per_bit[j];}}}// 遍历每位为1的次数数组,出现次数不是3n的倍数的位,为所求元素为1的位int key = 0;for (int i = 31; i >= 0; --i){// 还原所求值if (times_per_bit[i] % 3)key = key ^ (1 << i);}return key;}
};

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

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

相关文章

Go 延迟调用机制

defer延迟调用机制 是什么&#xff1f;为什么&#xff1f; 延迟调用是函数return正常结束后或者painc异常结束前会执行的一些操作。 再申请资源的时候延迟调用&#xff0c;防止忘记资源释放&#xff0c;数据库、文件、锁等资源释放。 延迟调用的顺序&#xff1f; 会按先进后出的…

景源畅信电商:抖音小店怎么做好运营?

在如今这个数字化时代&#xff0c;电商平台如雨后春笋般涌现&#xff0c;其中抖音小店以其独特的短视频营销模式迅速崛起。如何在这个竞争激烈的市场中占据一席之地&#xff0c;成为了许多商家和创业者思考的问题。下面&#xff0c;我们将深入探讨抖音小店的运营策略&#xff0…

多线程插入10万条数据,且避免堆栈溢出

在多线程环境下插入大量数据&#xff08;如10万条&#xff09;时&#xff0c;避免堆栈溢出的关键在于合理管理线程的生命周期、控制递归深度&#xff08;如果使用了递归的话&#xff09;&#xff0c;以及合理分配每个线程处理的数据量。以下是一些建议来实现这个目标&#xff1…

论文阅读[268]基于EEM荧光光谱,感知燃烧产生的颗粒物

【论文基本信息】 标题:EEM Fluorescence Spectroscopy based Sensing of Combustion Generated Particulate Matter 来源与类型:华盛顿大学,博士学位论文 推荐理由:论文作者将主成分回归(PCR)方法与三维荧光光谱结合,预测样本中特定类污染物的总浓度,准确率达到了97.6…

Qt——控件

目录 概念 QWidget核心属性 enabled geometry WindowFrame的影响 windowTitle windowIcon qrc的使用 windowOpacity cursor font toolTip focusPolicy ​编辑 styleSheet 按钮类控件 PushButton RadioButton CheckBox 显示类控件 Label textFormat pixm…

docker run 两个挂载路径怎么设置

docker run 两个挂载路径怎么设置 在使用 docker run 命令时&#xff0c;如果需要挂载多个宿主机目录到容器中&#xff0c;您只需为每个挂载路径添加一个 -v 或 --volume 选项即可。下面是一个示例&#xff0c;展示了如何挂载两个宿主机目录到容器的不同路径上&#xff1a; Bas…

MongoDB CRUD操作:地理位置应用——通过地理空间查询查找餐厅

MongoDB CRUD操作&#xff1a;地理位置应用——通过地理空间查询查找餐厅 文章目录 MongoDB CRUD操作&#xff1a;地理位置应用——通过地理空间查询查找餐厅地图的扭曲搜索餐厅浏览数据查找当前邻居查找附近所有餐厅查找一定距离内的餐厅使用$geoWithin&#xff0c;不排序使用…

redhat遇到安装包缺失问题

缺失的文件用repoquery --nvr --whatprovides XXX 查询 repoquery --nvr --whatprovides libstdc.so.6然后使用yum -y install XXX 选择查询到的文件的安装 yum -y install libstdc-8.5.0-3.el8Last metadata expiration check: 0:06:30 ago on Wed Jun 5 04:02:24 2024. lib…

模板进阶

非类型模板参数&#xff08;常量参数&#xff09; 相当于向类传递常量&#xff08;编译前确定&#xff09;参数 只能传整型/size_t&#xff0c;不可double等 C20 后可以支持其他内置类型&#xff08;可指针&#xff09; 自定义类型的实参永远不行 array 可理解为固定size的…

JS继承的方式

目录 原型链继承构造函数继承组合继承寄生组合继承ES6 Class 继承原型链继承 原理: 通过将子类的原型(prototype)设置为父类的一个实例,使得子类实例能够沿着原型链访问到父类的属性和方法。 function Parent() {this.parentProperty

在点云地图中进行点云计数

文章目录 概要头文件主要代码概要 在激光SLAM(Simultaneous Localization and Mapping)中,局部点云地图是通过激光雷达扫描捕捉到的周围环境的局部三维点集合。统计局部点云地图中的所有点数目是一个常见的需求,这可以帮助我们了解数据的密集程度、有效性等。 为了统计局…

JavaEE:http请求 | 过滤器 | 同步与异步请求 | 跨域问题 | axios框架 有这一篇就够!

&#x1f4c3;HTTP请求 ▐ http超文本传输协议&#xff1a; ⦁ http超文本传输协议属于应用层协议&#xff0c;传输内容必须是超文本内容 (网页内容) ⦁ 例如在网页上点击超链接&#xff0c;提交表单&#xff0c;都可以向后端发送一个http请求 ⦁ 一次http请求中包含请求行、…

力扣167. 两数之和 II - 输入有序数组

Problem: 167. 两数之和 II - 输入有序数组 文章目录 题目描述思路复杂度Code 题目描述 思路 1.定义左、右指针left、right分别指向数组索引为0和索引为nums.length - 1&#xff0c;定义结果数组int[] res new int[2]用于存储索引; 2.查找&#xff1a;当判断numbers[left] nu…

机器视觉——硬件常用基础知识

光源 机器视觉中光源的作用 1&#xff09;强化特征&#xff0c;弱化背景 2&#xff09;光源打得好&#xff0c;图好了&#xff0c;后期算法更简化 3&#xff09;图好了&#xff0c;测试速度更高 各种光源的综合性能对比及为啥使用LED灯 光的颜色的选择 白色光&#xff1a;通常用…

Qwen-VL论文阅读

论文地址 其他同学的详细讲解 模型结构和参数大小 &#xff08;1&#xff09;LLM&#xff1a;Qwen-7B &#xff08;2&#xff09;Vision Encoder&#xff1a;ViT架构&#xff0c;初始化参数是 Openclip’s ViT-bigG。 在训练和推理过程中&#xff0c;输入的图像都被调整到…

C语言函数递归实现汉诺塔问题

汉诺塔问题的大概 汉诺塔问题如图三个柱子&#xff0c;利用B将A上面的盘子移到C上面&#xff0c;但是一次只能移动一个盘子并且大的盘子不可以在小的盘子上面。 当只有三个盘子的时候&#xff0c;就像图片一样移动&#xff0c;当盘子多了起来我们就很难分得清逻辑了。 这个时候…

MySQL之查询性能优化(四)

查询性能优化 MySQL客户端/服务器通信协议 一般来说&#xff0c;不需要去理解MySQL通信协议的内部实现细节&#xff0c;只需要大致理解通信协议是如何工作的。MySQL客户端和服务器之间的通信协议是"半双工"的&#xff0c;这意味着&#xff0c;在任何一个时刻&#…

【退役之重学】为什么要加入多级缓存

一、为什么 加入多级缓存是为了提高数据访问的效率和性能 二、怎么做 在多级访问系统中&#xff0c;数据首先会被存储在速度最快的 L1 缓存中&#xff0c;如果数据在 L1 缓存中未命中&#xff0c;则会继续在 L2 缓存 和 L3 缓存中查找&#xff0c;如果在所有缓存中都未命中&…

java —— 打印流

打印流分字符打印流 PrintWriter 和字节打印流 PrintStream&#xff0c;两者用法基本一样&#xff0c;但字符打印流明显应用范围更广一些。 一、打印至控制台 public static void main(String[] args) {String str"hello";PrintWriter pwnew PrintWriter(System.ou…

神经网络与深度学习——第15章 序列生成模型

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第15章 序列生成模型&#xff0c;习题还没做先存在这里。 序列生成模型 序列概率模型 序列生成 N元统计模型 深度序列模型 模型结构 嵌入层 特征层 输出层 参数学习 评价方法 困惑度 BLEU算法 ROUGE算法 序…