编程题—面试题56 - I. 数组中数字出现的次数

数组中数字出现的次数 python 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例 1: 输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1] 本题用到异或的特点a^a=0, a^0=1 解题思路: 1.将两个不同的数划分开。根据题目描述这个数组中两个数字不同,我们利用异或操作的特点先将数组自异或一遍,以4146为例,0100 0001 0100 0110就会得到一个数0111。 2.自己异或一遍最右一位第一个1可以 阅读详情

题目连接

题目描述
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。

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

示例 2:
输入:nums = [1,2,10,4,1,4,3,3]
输出:[2,10] 或 [10,2]
 
限制:
2 <= nums <= 10000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目分析

方法1

1、使用hashmap或者hashset存储,只需遍历一遍即可得出正确答案
但题目要求空间复杂度为o(1),不符合要求

方法2

1、使用异或^,将所有元素异或一遍,结果的某一位肯定不为0
2、使用&判断出具体哪一位不为0,例如第三位,则tmp=0010
3、然后遍历数组,将每一位数字和tmp进行&操作,如果为0则分为a组,否则为b组
4,将a组中的元素进行异或就得到结果1,将b组中的元素进行异或得到结果2

通过代码
class Solution {
    public int[] singleNumbers(int[] nums) {
    	int[] res= new int[2];
    	int flag=0;
    	for(int i=0;i<nums.length;i++) {
    		flag^=nums[i];
    	}
    	int tmp=1;
    	while((flag&tmp)==0) {
    		tmp<<=1;
    	}
    	for(int i=0;i<nums.length;i++) {
    		if ((nums[i]&tmp)==0) {
    			res[0]^=nums[i];
    		}else {
				res[1]^=nums[i];
			}
    	}
    	return res;
    }
}
2013计算机考研统考408真题及答案 立即下载

相关推荐

从零开始用QP框架开发STM32:事件驱动编程实战指南(附状态机设计技巧)

本文详细介绍了如何使用QP框架在STM32上实现事件驱动编程,包括状态机设计技巧和嵌入式开发实践。通过对比传统前后台系统和RTOS,展示了QP框架在资源占用、实时性和代码可维护性方面的优势,并提供了从环境搭建到高级状态机设计的完整指南。

h6i7j8的博客 1173

2013年的408算法题

文章目录0 结果1 题目2 思路3 实现 0 结果 1 题目 2 思路 思路一: 使用hash映射打表,每出现一次次数加1,如果次数有超过n/2,则存在主元素,反之,则不存在。(缺点:需要辅助数组) 思路二: 两两相互抵消。如果数组中存在大于一般的相同元素,首先假设第一个元素为主元素的候选元素【统计个数为1】,如果目前元素统计的个数大于0,遇到相同的数字——个数加1,不同的数字——个数减1;当元素统计的个数为0时,将遇到的数字变更为候选的主元素。循环结束时,如果个数大于0,则 3 实现 #include

韩江雪de 小屋 2290

2025最新正版Autodesk 3ds Max 2022安装教程:从下载到中文环境配置全流程解析

Autodesk 3ds Max 2022是一款专业的三维建模、动画和渲染软件,广泛应用于影视制作、游戏开发、建筑可视化等领域。

waicsdn_haha的博客 1万+

2013年408考研算法题

题目 题解 分析 同2009年算法题,考察带头结点的单链表 1. 结点结构 typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*Linklist; 2. 检查单词后缀 由于共享相同后缀的存储空间,首先考虑单词长度问题,一定是从长单词的 长单词.len-短单词.len+1 的位置开始检查 3. 比较后缀 两个单词的链表的指针同时向右移动,进行比较,遇到不相同的直接跳出。 代码 typedef struct LNode{ E

Shaun善逸的博客 763

ABAP动态填充Word模板:基于cl_docx_document的XML替换方案

本文详细介绍了ABAP中基于cl_docx_document类的动态Word模板填充方案。该方案通过直接操作DOCX文件的XML核心,完美解决了传统OLE/DOI方法在格式保真、性能和后台运行方面的痛点,是实现复杂、批量Word文档生成的优雅解决方案。

gpt4scribbler的博客 525

麒麟V10 ARM环境离线部署MySQL:从依赖缺失到服务自启的完整避坑指南

本文详细介绍了在麒麟V10 ARM环境下离线部署MySQL的完整流程,包括依赖缺失解决方案、目录配置、服务自启设置及性能调优。特别针对国产操作系统和ARM架构的兼容性问题,提供了实用的避坑指南和优化建议,帮助用户高效完成MySQL部署与维护。

weixin_28741413的博客 409

在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。

https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-ii-lcof/ 面试题56 - II. 数组中数字出现的次数 II 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。 方法一: 排序,找到那个数。 class Solution { publ...

Mason97的博客 1908

ROS2实战:从零部署Cartographer激光SLAM系统

本文详细介绍了在ROS2 Humble环境下,从零开始部署Cartographer激光SLAM系统的完整实战流程。内容涵盖环境准备、Cartographer安装(APT与源码编译两种方式对比)、工作空间与功能包创建、核心启动文件与Lua配置文件编写、系统构建与可视化启动,以及地图保存与实战调参技巧,帮助开发者快速构建稳定可靠的机器人SLAM应用。

weixin_29213655的博客 248

LeetCode-面试题56 - I. 数组中数字出现的次数-中等

LeetCode-面试题56 - I. 数组中数字出现的次数-中等 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例 1: 输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1] 示例 2: 输入:nums = [1,2,10,4,1,4,3,3] 输出:[2,10...

clover_my的博客 269

使用FPGA实现MIPI DSI接口

通过使用FPGA,我们可以实现MIPI DSI接口,并在FPGA上生成相应的时序和电平转换电路。通过使用FPGA,我们可以实现MIPI DSI接口,并在FPGA上生成相应的时序和电平转换电路。在本文中,我们将探讨如何使用FPGA实现MIPI DSI接口,并提供相应的源代码。根据不同的发送状态,我们设置相应的输出信号。请注意,这只是一个基本的示例,用于说明如何使用FPGA实现MIPI DSI接口的发送功能。请注意,这只是一个基本的示例,用于说明如何使用FPGA实现MIPI DSI接口的发送功能。

ZdqDeveloper的博客 1697

“华为杯”研究生数学建模竞赛2020年-【华为杯】E题:能见度估计与预测(附获奖论文及python代码实现)

因此,题目要求借助机场的 AMOS 观测数据中的气压、温度、湿度、风速等气象因子,达到 100% 时,空气中的水汽便会凝结成细微的水滴悬浮于空中,使地面水平的能见度下。传统的仪器探测法成本高,覆盖范围小,而基于视频的能见度检测能弥补仪器测量的不足之处,但是预测精度不高,需要进一步改。象条件,空气质量的影响,其中较为关键的影响因子是雾和霾。性过强,激光能见度仪的检测方法更为可信,但是激光能见度仪覆盖的检测范围小,安装。覆盖的交通视频路况数据间接计算得到能见度数值的方法,此方法成本较低,覆盖范围广。

getusushu的博客 2282

剑指Offer18--面试题56 - I. 数组中数字出现的次数+++异或性质

剑指Offer18--面试题56 - I. 数组中数字出现的次数题目描述方法一:hashSet (但是题目要求空间O(1))异或(位运算) 题目描述 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例 1: 输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1] 示例 2: 输...

zhangyunpeng0922的博客 268

UCIE Specification详解(八)

Logical Physical Layer(逻辑物理层)

Crazzy_M的博客 1607

面试题56 - I. 数组中数字出现的次数

[面试题56 - I. 数组中数字出现的次数] 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例 1: 输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1] 示例 2: 输入:nums = [1,2,10,4,1,4,3,3] 输出:[2,10] 或 [10,2] 限制...

答案在路上,自由在风里 241

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

面试题56 - I 数组中数字出现的次数(java)

一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例 1: 输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1] 示例 2: 输入:nums = [1,2,10,4,1,4,3,3] 输出:[2,10] 或 [10,2] 限制: 2 <= nums &...

weixin_43306331的博客 650

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

剑指offer系列-面试题56 - I. 数组中数字出现的次数 (python)

文章目录1. 题目2. 解题思路3. 代码实现3.14. 总结5. 参考文献 1. 题目 2. 解题思路 3. 代码实现 3.1 4. 总结 5. 参考文献 [1] 剑指offer丛书 [2] 剑指Offer——名企面试官精讲典型编程题

besmarterbestronger的博客 305

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

leetcode【每日一题】 面试题56 - I. 数组中数字出现的次数 Java

我的leetcode代码都已经上传到我的git 题干 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例 1: 输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1] 示例 2: 输入:nums = [1,2,10,4,1,4,3,3] 输出:[2,10] 或 [10,2] ...

qq_43491066的博客 209

面试题56: 数组中数字出现的次数

/******************************************************************* *《剑指Offer——名企面试官精讲典型编程题》C++代码 * * htfeng * 2018.10.09 * * 面试题56: 数组中数字出现的次数 * 题目一:数组中只出现一次的两个数字 * * 题目一分析: * 相关数字的二进制表示为: * 2...

weixin_30807677的博客 195

数组中数字出现的次数 II&&消失的数字&&数组中数字出现的次数

这里的oj题全都是接口型也就是只给出一个函数填写即可提示以下是本篇文章正文内容,下面案例可供参考。

qq_62939852的博客 295

Leetcode 面试题56 - I.数组中数字出现的次数

Leetcode 面试题56 - I.数组中数字出现的次数 1 题目描述(Leetcode题目链接)   一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1] 输入:nums = [1,2,10,4,1,4,3,3] 输出:[2...

qq_39378221的博客 189

面试题56:数组中数字出现的次数

面试题56:数组中数字出现的次数 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 class Solution { public: vector<int> singleNumbers(vector<int>& nums) { int x=0,y=0,m=0,n=1; for(int num:nums) // 对数组内所有数进行异或,

m0_56077202的博客 242

剑指offer面试题56:数组中数字出现的次数

面试题56:数组中数字出现的次数 题目一:数组中只出现一次的两个数字 一个整型数组里除两个数字之外,其它数字都出现了两次。请写程序找出这两个只出现一次的数字。 思路:用哈希表存储每个数字出现的次数 代码实现: ...

小鑫的博客 200

剑指 Offer 56 - II. 数组中数字出现的次数 II

剑指 Offer 56 - II. 数组中数字出现的次数 II 集体思路:使用哈希表 算法流程: 使用哈希表将nums中的数值和是否出现多次映射。 每次映射查找n是否已在哈希表中,在则将此值记为false,否则true. 遍历nums,查找nums值对应的哈希表res[nums]是否为真,为真则返回结果nums. class Solution { public: int singleNumber(vector<int>& nums) { //使用哈希表

carollion的博客 102

剑指offer编程题Java实现——面试题8旋转数组的最小数字

剑指offer面试题8:旋转数组的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1 旋转数组的特点: 1,旋转之后的数组可以分为两个排序的子数组,且前面的子数组的元素都大于或等于后面子数组的...

weixin_30817749的博客 153

剑指Offer编程题--旋转数组的最小数字

题目链接:旋转数组的最小数字 题意: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解题思路: 没必要旋转,直接返回答案就行 class Solution { public: int minNumberInRotateArray(vector<in.

error311的博客 182
上一篇: 编程题—面试题48. 最长不含重复字符的子字符串
下一篇: 编程题—不同路径
code_AC
博客等级 码龄12年 255粉丝 109原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值