剑指offer leetcode260 数组中只出现一次的数字 python实现两种方法

【LeetCode Python实现】260. 只出现一次的数字 III(中等) 文章目录题目描述示例 1:示例 2:示例 3:提示:参考代码 题目描述 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。 进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现? 示例 1: 输入:nums = [1,2,1,3,2,5] 输出:[3,5] 解释:[5, 3] 也是有效的答案。 示例 2: 输入:nums = [-1,0] 输出:[-1,0] 示例 3: 输入:nums = [0, 阅读详情

题目描述

一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。

 

方法一:字典

# -*- coding:utf-8 -*-
class Solution:
    # 返回[a,b] 其中ab是出现一次的两个数字
    def FindNumsAppearOnce(self, array):
        num_dict = dict()
        for num in array:
            if num in num_dict:
                num_dict[num] += 1
            else:
                num_dict[num] = 1
                 
        res = []
        for key, val in num_dict.items():
            if val == 1:
                res.append(key)
        return res

时间复杂度为O(n),空间复杂度为O(n),并不是很优雅。

方法二:位运算

# -*- coding:utf-8 -*-
class Solution:
    # 返回[a,b] 其中ab是出现一次的两个数字
    def FindNumsAppearOnce(self, array):
        if not array:
            return []
        tmp = 0
        # 对array中数进行异或
        for i in array:
            tmp ^= i
        # 找到tmp中最低位为1的index
        index = 0
        while (tmp & 1) == 0:
            tmp >>= 1
            index += 1
        # 两组数分别异或
        a = b = 0
        for i in array:
            if self.isBit(i, index):
                a ^= i
            else:
                b ^= i
        return [a, b]
                 
    def isBit(self, num, index):
        num >>= index
        return num & 1

时间复杂度O(n),空间复杂度为O(1)

-------------------------------------------------------------------------------------------------------------------------------------

更多题目包括leetcode、牛客网、各种排序算法解法参见个人GitHub,持续更新中,欢迎star ~~

https://github.com/PemLer/Journey_of_leetcode

-------------------------------------------------------------------------------------------------------------------------------------

STM32学习笔记 二、基于STM32F103C8T6和STM32CubeMX实现UART串口通信数据收发 系列文章目录 一、基于STM32F103C8T6最小系统板和STM32CubeMX实现LED灯循环闪烁 文章目录系列文章目录前言一、配置CubeMX二、逻辑代码部分 前言 这次我用的板子是一个用STM32F103C8T6作为主控芯片的一个数据采集卡,两个LED灯连接的引脚是PB3与PB4,TX与RX引脚分别是PA9和PA10。 一、配置CubeMX 1、新建工程; 2、配置时钟源,在RCC里面的HSE配置的是晶振时钟; 3、配置程序烧录引脚SYS为SWD模式; 4、配置GPIO口,配置一个LE 阅读详情

相关推荐

手把手教你用野火FPGA开发板资料包安装ModelSim 10.5se(附破解教程)

本文提供了一份详细的指南,手把手教你为野火FPGA开发板安装和配置ModelSim 10.5se仿真工具。内容涵盖从前期准备、软件安装、许可证激活(学习用途)到环境验证的全过程,并简要介绍了如何与Xilinx Vivado开发套件集成,帮助初学者快速搭建稳定的FPGA仿真环境。

lstm7chronicler的博客 250

Leetcode day5 初级算法-数组-只出现一次的数字-位运算异或+set

题目 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 要求 线性复杂度 不使用额外空间 方法一:集合set 思路 set 集合中元素的互异性 把数组中的元素放进set,如果相同,也就是说集合中已经有啦,这个元素出现了两次,那就删掉集合中的这个元素 否则就插入这个新的元素到set中 也就是说,第一次碰到insert,第二次碰到erase 会发现只有那个只出现了一个元素还在set中,把它return 注意 s.find(num)==s.end() // 没

weixin_44601578的博客 216

芯片低功耗设计实战:CPF与UPF流程选择指南(附工具对比)

本文深入探讨了芯片低功耗设计实战中CPF与UPF流程的选择策略。文章从两者本质差异与演进脉络出发,结合Cadence与Synopsys工具链的深度支持实况,为工程师提供了基于项目场景的决策框架。重点分析了在混合工具链环境下如何实施流程与验证,并强调了利用Spyglass等工具确保功耗意图无损传递的关键技巧,旨在帮助团队做出明智的流程抉择,提升设计效率与可靠性。

weixin_29197051的博客 405

260. 只出现一次的数字 III

给定一个整数数组nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按任意顺序返回答案。 进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现? 示例 1: 输入:nums = [1,2,1,3,2,5] 输出:[3,5] 解释:[5, 3] 也是有效的答案。 示例 2: 输入:nums = [-1,0] 输出:[-1,0] 示例 3: 输入:nums = [0,1] 输出:[1,0] 提示: ...

allway2的博客 415

VSCode CMake 安装与配置详解

概述 在windows上使用cmake编译C/C++程序时,首先需要CMake,安装gcc/g++编译环境,然后使用VSCode 以及配置下CMakelist.txt。 所需工具: VSCode (需要安装以下插件) C/C++ C++ Intellisense CMake CMake tools CMake Tools Helper CMake MinGW 安装CMake 下载链接:...

Markus 8万+

OKX 欧易 交易机器人开发基础

接口文档: https://www.okx.com/docs-v5/zh/#overview REST API 常用请求 查看账户余额 结果数据格式: 获取限价 结果格式: 获取指数行情 数据结构: 下单 结果数据: 获取未成交订单列表 返回结果: 撤单 结果结构:

Willin Wang 的全栈升级指南 2万+

#LeetCode136. 只出现一次的数字 #在所有 Java 提交中击败了 99.82% 的用户 @FDDLC

题目描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例2: 输入: [4,1,2,1,2] 输出: 4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/single-number 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 .

LiuXingchang的博客 366

【Unity 实用工具篇】| Unity中 实现背景模糊效果,简单易用

背景模糊 是一个很实用的功能,它可以帮助游戏在视觉上有更好的专注力和表现力。 实现模糊的种类和方式有很多种,大家自行选择适合自己的就可以了。 下面一起来看下本文实现背景模糊的效果和使用方式吧!

努力前行,总会成为自己心中的那道光 4万+

LEETCODE | PYTHON | 136 | 只出现一次的数字

LEETCODE | PYTHON | 136 | 只出现一次的数字

Angelawlc的博客 133

华为OD机试真题 新系统 9月16号 【园区基站节能部署规划】

华为OD机试真题 新系统【园区基站节能部署规划】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【园区基站节能部署规划】多语言题解。

qq_45776114的博客 352

在 SAP SD 模块里,销售订单号既可以由系统“自动”产生,也可以由用户“手工”输入,核心取决于“号码段(Number Range)”与“订单类型(Sales Document Type)”这两处配

SAP销售订单编号配置指南:系统提供内部自动编号和外部手工编号两种方式,通过VN01定义号码段(内部/外部),VOV8分配给订单类型并设置"ExtNo.Rq"选项即可切换。高阶应用支持灵活编号(如加前缀)或通过增强出口完全自定义编号规则。配置时需注意号码段创建、分配及传输问题,常见故障包括号码范围不存在或配置错误。核心是"号码段+订单类型"的组合控制编号生成方式,满足从简单到复杂的业务需求。

金牌架构师 531

(python版)《剑指Offer》JZ40:数组中只出现一次的数字

牛客 Leetcode #【只出现一次的数系列】位运算 作者:fe-lucifer 链接:https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/solution/zhi-chu-xian-yi-ci-de-shu-xi-lie-wei-yun-suan-by-a/ 来源:力扣(LeetCode) 本题和主站 260 是一样的. 除了这个,主站还有 136 和 137,645。 总共加起来本系列一共 四道

sinat_29950703的博客 611

FPGA 学习笔记:Vivado 配置IO引脚约束

FPGA 学习笔记:Vivado 配置IO引脚约束

坚韧与专注 2万+

python输出一个数组中只出现一次得数字_(python版)《剑指Offer》JZ40:数组中只出现一次的数字...

#【只出现一次的数系列】位运算本题和主站 260 是一样的. 除了这个,主站还有 136 和 137,645。 总共加起来本系列一共 四道题。四道题全部都是位运算的套路,如果你想练习位运算的话,不要错过~作者:fe-lucifer链接:https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/solut...

weixin_36146690的博客 849

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

牛客-剑指offer系列题解:数组中只出现一次的数字

记录刷题的过程。牛客和力扣中都有相关题目,这里以牛客的题目描述为主。该系列默认采用python语言。 1、问题描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 2、数据结构: 位运算 3、题解: 位运算 和力扣260题一样 力扣的136,137,645也是位运算,想练手位运算不妨做做 https://leetcode-cn.com/proble...

weixin_42042056的博客 261

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Dayx5:剑指offer

56.1. 数组中只出现一次的两个数字 leetcode 260 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素 哈希表 Time:O(2n) Space:O(n) #记录(每个数字出现次数) 筛选 def singleNumber(self, nums: List[int]) -> List[int]: dict={} for x in nums: if x not in dict:

try_trying_try的博客 198

iOS 安装 Minecraft Java 版完整指南:用 PojavLauncher 在 iPhone 和 iPad 上玩 Java 版

地铁通勤时点开 App,几十秒后就站在自己的存档世界里挖了十分钟方块——这不是模拟器,而是完整的 Minecraft: Java Edition。PojavLauncher 是一个基于 Boardwalk 项目的开源启动器,它把 Java 版的客户端、Java 运行环境连同渲染管线一起装进了 iOS 应用里,从早期 Beta 版到最新快照都能跑,Forge、Fabric、OptiFine、Quil

gitblog_00972的博客 260

JMeter 6.0.0 升级指南:换装 Java 17,5 步完成平滑迁移

你的团队要不要升级 JMeter 6.0.0?如果负载机还停留在 Java 8 线上,现在就该评估了。这次发布的最大变化:整个工具的运行底座换成 Java 17。收益很直接——高并发下 GC 停顿更短,同一台机器能撑起更多虚拟用户;代价是插件和脚本要做一轮兼容检查。 ## ① 版本变化速览:本次升级改了什么 一句话概括:测试脚本(.jmx)基本不动,动的是底下的"发动机"。 | 变化点 |

gitblog_00954的博客 962

程序员面试金典 17.19 消失的两个数字:异或与 lowbit 分组,O(N) 时间 O(1) 空间

本篇技术指南围绕《程序员面试金典(第 6 版)》面试题 17.19「消失的两个数字」(Missing Two LCCI)展开,完整讲解如何在不使用额外线性空间的前提下,利用异或(XOR)与 lowbit 分组在 O(N) 时间内找出从 1 到 N 数组中缺失的两个整数,并给出本仓库 lcci/17.19.Missing Two 目录下 Python、Java、C++、Go、Swift 五种语言的逐

gitblog_00358的博客 377

如何从零构建FS-Enhancer-Extreme?Rust+Android NDK+Gradle混合构建环境完全指南(JDK21/Node24/Rust Nightly)

FS-Enhancer-Extreme 是一款 ForgeStore 增强模块(Rust 编写核心),极致隐藏解锁 Bootloader 产生的检测点。本文带你从零搭建它的混合构建环境——Rust Nightly + Android NDK 交叉编译 + Gradle 打包——只需 JDK 21、Node.js 24 与 Rust Nightly 三件套,一条 `./gradlew zip` 命令

gitblog_00568的博客 188

OpenCore Legacy Patcher 完整教程:手把手给老 Mac 装上新版 macOS

系统设置里的大版本更新入口是灰的,或者你手边还有一台 2015 年前后的 Mac,屏幕手感都挺好,却死活进不了 Sonoma 或 Sequoia 的安装流程——这就是 OpenCore Legacy Patcher(下文简称 OCLP)要解决的痛点。它的原理很直白:在系统最前面加一层 OpenCore 引导程序(开机的第一道"中转站"),把旧机器的身份改写成新系统认得的型号,再给显卡、无线网卡补上

gitblog_00591的博客 268

HsMod炉石插件实战指南:5分钟装好,8倍速开包把无效等待压到零

炉石传说插件 HsMod 只解决一类问题:把游戏里没意义的等待和点击还给你。开包动画快进、对局一键变速、弹窗按需屏蔽、对手段位全亮出来。 没用它时,攒了 100 包不敢开,动画要播到天亮。用了之后,空格一次开 5 包,8 倍速快进,几分钟清完。 先说结论:它只做一件事,把没意义的等待、重复的点击、挡视线的弹窗统统还给你。 ## 🛠️ 装好 HsMod 插件:Windows 最快路径,mac

gitblog_00977的博客 142

LeetCode【0136】只出现一次的数字

题目难度:简单;数据结构:数组;应用算法:异或运算(XOR Operation)

AnFany 449

LeetCode—Python—260.只出现一次的数字III

1、题目描述(难度:中等) https://leetcode.com/problems/single-number-iii/description/ 给定一个整数数组nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。 示例 : 输入: [1,2,1,3,2,5] 输出: [3,5] 注意: 结果输出的顺序并不重要,对于上面的例子,[5,...

IOT_victor的博客 386

LeetCode260. 只出现一次的数字 III

题目 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。 示例 : 输入: [1,2,1,3,2,5] 输出: [3,5] 注意: 结果输出的顺序并不重要,对于上面的例子, [5, 3] 也是正确答案。 你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?   分析 方法呢是从网上看来的,自己理解了半天,...

qq_38595487的博客 2864

Leetcode 260. 只出现一次的数字 III

设只出现一次的两个数为b,c 先全部数异或依次,得到的是a=b^c,a二进制取1的位【k】代表b c在k位1个为1一个为0 把数组分2组,一组在k位是1一组是0,这样就把b和c分在了不同组,然后两组异或和分别了b和c class Solution { public: vector<int> singleNumber(vector<int>& nums)...

Bendaai的博客 596

LeetCode Medium 260 找单独的数III Python

    算法:bit位运算法     思路:         首先联想136题中异或运算XOR的作用         N^0 = N             N^N = 0             A^B^A = (A^A)^B = 0^B = B         但是本题中要找两个数,那么就可以想一下,可以依照某种规则,将数组中的元素划分为两组,在每一组中寻找那个单独的目标x和y ...

h 333
上一篇: Leetcode 53 最大子序和(python)
下一篇: 吴恩达深度学习课程之序列模型第二周-自然语言处理与词嵌入 思维导图
Elmerr
博客等级 码龄12年 178粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值