leetcode 剑指offer56-II:数组中数字出现的次数II

剑指Offer(leetcode版) 目录剑指Offer-03 数组中重复的数字剑指Offer-04 二维数组中的查找剑指Offer-05 替换空格剑指Offer-06 从尾到头打印链表剑指Offer-07 重建二叉树剑指Offer-09 用两个栈实现队列剑指Offer-10-I 斐波那契数列剑指Offer-10-II 青蛙跳台阶问题剑指Offer-11 旋转数组的最小数字剑指Offer-12 矩阵中的路径剑指Offer-13 机器人的运动范围剑指Offer-14-I 剪绳子剑指Offer-14-II 剪绳子II剑指Offer-15 二进制中1 阅读详情

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

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

限制:
1 <= nums.length <= 10000
1 <= nums[i] < 2^31

思路1:
统计数组中各个数在32位中,每一位中1的个数,然后进行模3就知道所求的数在哪位为1了。
主要思路参考题解链接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:本题中提到数组中的数都是大于1的,所以在返回的时候不需要考虑python的存储特性,但是如果在数组中出现负数的话,就需要在返回结果的时候,先做异或运算再取反。

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        counts = [0] * 32
        for num in nums:
            for j in range(32):
                counts[j] += num & 1
                num >>= 1
        res, m = 0, 3
        for i in range(32):
            res <<= 1
            res |= counts[31 - i] % m
        return res if counts[31] % m == 0 else ~(res ^ 0xffffffff)

这是一段通用代码,实际上,只需要修改求余数值 m ,即可实现解决 除了一个数字以外,其余数字都出现 m 次 的通用问题。
思路2: 利用状态转换机 这块是比较难想到的,主要过程参考上述题解的链接。这种状态转换机的方式相对于思路1效率高一些,但是1更好理解一些。

【电动汽车再生制动控制技术(万字长文,图文并茂)】 电动汽车再生制动的基本原理是:通过具有可逆作用的电动机/发电机来实现电动汽车动能和电能的转化。在汽车减速或制动时,可逆电机以发电机形式工作,汽车行驶的动能带动发电机将汽车动能转化为电能并储存在储能器(蓄电池或超级电容器)中;在汽车起动或加速时,可逆电机以电动机形式工作,将储存在储能器中的电能转化为机械能给汽车。这对于改善汽车的能量利用效率,延长电动汽车的行驶距离是至关重要的。 阅读详情

相关推荐

半导体设备隔振必看:如何用天棚阻尼PID控制实现VC-C级振动抑制(含SIMULINK模型)

本文深入探讨了在半导体精密制造中,如何运用天棚阻尼PID控制算法实现VC-C级振动抑制。通过构建高保真单自由度仿真模型,详细解析了从算法原理、SIMULINK实现到参数整定的全链路方案,并针对谐波扰动提供了陷波滤波器设计方法,为工程师提供了从仿真到实践的完整主动隔振技术指南。

pz89012345的博客 538

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

力扣的判题真的很严格。

adcxhw的博客 698

保姆级教程:SAP ABAPer如何为VF01销售发票和MIRO发票校验配置凭证替代(含AC_DOCUMENT BADI完整代码示例)

本文详细解析了SAP ABAP中通过AC_DOCUMENT BADI实现VF01销售发票和MIRO发票校验的凭证替代技术。从技术选型到BADI实施步骤,再到核心逻辑代码示例,为ABAP开发者提供了一套完整的解决方案,帮助应对财务部门复杂的业务需求。

weixin_30421809的博客 352

[剑指Offer]:数组中数字出现的次数

文章目录题目一题解思路:分组异或题目二题解思路:方法一:排序方法二:hashmap方法三:位运算 题目一 一个整型数组 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] 题解思路:分组异或 先对所有数字进行一次异或,得到两个

AngelDg的博客 318

STC89C52RC单片机原理图详解

左侧A0和右侧B0为一 一对应的关系,左上角DIR为控制数据方向端口,如果DIR接高电平是将左侧数据A0~A8送到右侧B0~B8,如果DIR接低电平,是将右侧数据B0~B8送到左侧A0~A8,由于在电路板上LE始终与VCC连接,因此这里。74HC595是串行输入,并行输出的移位寄存器,可用3根线输入串行数据,8根线输出并行数据,多片级联后,可输出16位、24位、32位等,常用于I/O口扩展。由于数码管为共阴极,给数码管下面接口输入阳码时,LED才亮,但是直接将P0~P7的高电平输入到数码管时,

m0_50562428的博客 6万+

OI 生涯回忆录 《Pilgrimage》

前言 于 NOI2020 后写下本文。 本文简单提及了在写作时尚能回忆起来的,在我的 OI 生涯中对我的影响重大的人、事、比赛等。 写作本文,旨在在回忆允许的范围内,对 OI 生涯进行一定程度上的梳理,总结。 开端 入门 我最早接触计算机程序设计,是在小学。 那时候,我的数学成绩不错,就被老师推荐去学习编程。 就这样,我在局前街小学的何静老师的指导下,走上了编程的道路。 小学时的编程,与其说是 “竞赛” ,不如说是 “兴趣班” 。 当时,包括我在内,很多小孩子天性是浮躁的。支撑我对着无聊的代码学下去的,并不

cz_xuyixuan的博客 1万+

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

遍历完所有数字后,各二进制位都处于状态00和状态 01(取决于 “只出现一次的数字” 的各二进制位是1还是0 ),而此两状态是由 one来记录的(此两状态下 twos 恒为 0 ),因此返回 ones即可。如下图所示,考虑数字的二进制形式,对于出现三次的数字,各 二进制位 出现的次数都是3的倍数。因此,统计所有数字的各二进制位中1的出现次数,并对3求余,结果则为只出现一次的数字。如下图所示,对于所有数字中的某二进制位1的个数,存在3种状态,即对 3 余数为 0,1,2。

庄小焱 773

LED单元板驱动(HUB75接口)

开始之前先吐槽一下,搜这个的资料。要么都是Arduino,要么单片机的收费。小小的一个LED单元板,凭什么? 用Arduino是你速度快还是我ST,树莓派不好用?收费更离谱,这点东西还藏私?给你个中指凸。把原理都写出来看你怎么收费。 一、接口定义及原理 如图,有两个RGB通道,共占用6个IO。剩下的ABCDE为地址通道,LAT为行数据锁存通道,CLK为数据时钟,OE为低电平使能LED显示。图片这里没有E,证明它是16扫的,有E就会把B上面的地改为E。这样就是5位,2的5次方32扫。1.

a3748622的博客 3万+

剑指Offer56-Ⅱ—数组中数字出现的次数Ⅱ

剑指Offer56-Ⅱ 题意 解法1—哈希表 class Solution { public: int singleNumber(vector<int>& nums) { map<int,int> myMap; for(int num:nums) myMap[num]++; for(map<int,int>::iterator it=myMap.begin().

qq_39172845的博客 421

虚拟机ubuntu22.04.3中安装vitis2024.1注意事项

虚拟机ubuntu安装vitis2024.1

qq_52033578的博客 2495

USB驱动(URB)

本文介绍了Linux内核中USB驱动开发的核心概念URB(USB Request Block)。URB是主机与USB设备间传输数据的抽象结构体,包含目标设备、端点信息、数据缓冲区等关键字段。文章详细解析了URB的生命周期(分配、填充、提交、回调、释放)、四种传输类型(控制、批量、中断、等时)及其应用场景,并提供了鼠标设备的中断传输示例代码。最后强调了URB使用注意事项,包括DMA缓冲区分配、错误处理和资源释放等。URB作为USB驱动与内核通信的桥梁,是构建稳定USB驱动程序的基础。

m0_49476241的博客 915

数组中数字出现的次数Ⅱ

一、需求 在一个数组nums中除一个数字只出现一次之外,其他数字都出现了三次; 请找出那个只出现一次的数字。 示例 1: 输入:nums = [3,4,3,3] 输出:4 示例 2: 输入:nums = [9,1,7,9,7,9,7] 输出:1 二、哈希表 2.1 思路分析 遍历数组,利用哈希表存储数组中每个元素以及各自出现的次数,最后返回次数为1的元素即可; 2.2 代码实现 class Solution { public int singleNumber(int[] ...

皮卡qiu~的博客 464

优快云 付费专栏连载第 3 篇|Cadence Allegro 8 层板布局实战教程:RK3568 硬件模块化分区布局,DDR4 内存约束区域设置、布局禁忌避坑指南

本文是 RK3568 8 层板高速 PCB 设计实战专栏的第 3 篇,聚焦 DDR4 布局阶段的核心方法论与 Allegro 实操。文章从布局前 6 项前置检查清单入手,系统讲解模块化分区布局的五大黄金原则,并给出 160mm×100mm 样板的 5 大功能分区实战案例。随后以图文步骤演示如何在 Allegro 中创建 ROOM_DDR4 与 ROOM_CPU 约束区域,并强调 Hard Room 硬约束的强制校验作用。

weixin_44520581的博客 1733

Leetcode刷题:剑指offer【面试题56-Ⅱ 数组中数字出现的次数 II】

【面试题56-Ⅱ 】 Leetcode题目对应位置: 面试题56-Ⅱ: 思路:

学习 & 分享 ~ 407

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

leetcode:剑指 Offer 56 - II. 数组中数字出现的次数 II【简单排序】

排序后如果当前数字和下一个不等即为答案,如果是最后一个数字也是答案 总结 简单排序

小楼一夜听春雨 277

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

剑指 Offer 56 - II:数组中数字出现的次数 II题目解题方法一:有限状态自动机(位运算)方法二:哈希表记录次数 题目 题目链接 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。 示例 1: 输入:nums = [3,4,3,3] 输出:4 示例 2: 输入:nums = [9,1,7,9,7,9,7] 输出:1 解题 方法一:有限状态自动机(位运算) 参考链接 基本思路是 如下图所示,考虑数字的二进制形式,对于出现三次的数字,各 二进制位

菊头蝙蝠的博客 719

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LeetCode137 只出现一次的数字 II & 剑指Offer 56 - II 数组中数字出现的次数 II

LeetCode137 只出现一次的数字 II & 剑指Offer 56 - II 数组中数字出现的次数 II题目解题解题一:哈希表解题二:依次确定每一个二进制位解题三:数字电路设计解题四:数字电路设计优化 题目 LeetCode137 只出现一次的数字 II: 剑指Offer 56 - II 数组中数字出现的次数 II 中的限制有些区别,其余条件一样: 解题 解题一:哈希表 // javascript var singleNumber = function(nums) { const

443

《剑指Offer》题解汇总索引表(leetcode)

《剑指Offer》题解汇总索引表(leetcode) ???? 文章目录《剑指Offer》题解汇总索引表(leetcode)[【LeetCode】《剑指Offer》第Ⅰ篇⊰⊰⊰ 3 - 11题](https://blog.youkuaiyun.com/weixin_44368437/article/details/114194973)[【LeetCode】《剑指Offer》第Ⅱ篇⊰⊰⊰ 12 - 19题](https://blog.youkuaiyun.com/weixin_44368437/article/details/114

像写诗一样优雅地写代码~ 2万+

力扣leetcode剑指 Offer 56 - II. 数组中数字出现的次数 IIC++

力扣leetcode剑指 Offer 56 - II. 数组中数字出现的次数 IIC++ 剑指 Offer 56 - II. 数组中数字出现的次数 II 思路: 这道题目可以参考之前的两道题目,是之前两道题目的升级版 我们自然考虑到使用位运算来解决 与之前两道题目不同的是我们需要考虑维护一个对比特位计数的数组,我们对每个数字进行比特位计数,然后统计数组每个位上1的个数。 我们举例来看 从图中我们可以看出,我们对一个数组进行比特位统计,得到的结果对3取余,就可以得到结果 代码如下 class Solu

qq_36711295的博客 502

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

一、题目 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。 示例 1: 输入:nums = [3,4,3,3] 输出:4 示例 2: 输入:nums = [9,1,7,9,7,9,7] 输出:1 限制: 1 <= nums.length <= 10000 1 <= nums[i] < 2^31 二、解决 1、有限状态自动机 思路: 代码: class Solution { public int singleNumbe

HeavenDan的博客 440

[剑指-Offer] 56. I. 数组中数字出现的次数及II. 数组中数字出现的次数 II(位运算、异或、顶级解法)

文章目录1. 题目来源2. 题目说明3. 题目解析 --- I. 二叉树的深度方法一:中序遍历+常规解法4. 题目解析 --- II. 平衡二叉树方法一:递归+常规解法方法二:递归优化+巧妙解法 1. 题目来源 链接:I. 二叉树的深度 链接:II. 平衡二叉树 来源:LeetCode——《剑指-Offer》专项 2. 题目说明 3. 题目解析 — I. 二叉树的深度 方法一:中序遍历+常规解...

Y-puyu 的博客 1099

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

题目分析:[[EVD]] - 剑指 Offer 56 - II. 数组中数字出现的次数 IIhttps://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-ii-lcof/ 简单描述: 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。 限制🚫 1 <= nums.length <= 10000 示例: 输入:nums = [3,4,3,3] 输出:4

風的博客 388

LeetCode+剑指offer 题目(按标签汇总)

数组相关 1.两数之和

人大神成长记2 6153

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

剑指Offer 56-II.数组中数字出现的次数II题目描述思路一:哈希表思路二:排序+查找思路三:位运算思路四:有限状态机 题目描述 思路一:哈希表 若在没有时空间复杂度的情况下,一个简单的思路是直接使用哈希表记录数组中不同数字出现的次数: class Solution: def singleNumber(self, nums: List[int]) -> int: hashtable=dict() for i in nums: if

qq_43160985的博客 432

剑指 Offer 56 - II. 数组中数字出现的次数 II - 力扣(LeetCode)

剑指 Offer 56 - II. 数组中数字出现的次数 II - 力扣(LeetCode)

Onwaier的博客 451
上一篇: leetcode 剑指offer 56-I:数组中数字出现的次数
下一篇: leetcode 剑指offer59-I:滑动窗口的最大值
coding_diamond
博客等级 码龄8年 8粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值