【Python3】【力扣题】136. 只出现一次的数字

news2024/9/23 7:19:47

【力扣题】题目描述: 

【Python3】代码:

 1、解题思路:遍历列表元素,查看该元素在列表中共有多少个,返回个数为1的元素。

知识点:列表.count(...):统计列表中某元素个数。

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        for x in nums:
            if nums.count(x) == 1:
                return x

2、解题思路:使用哈希映射(HashMap)来存储每个元素以及出现的次数。哈希映射中的每个键值对,键表示一个元素,值表示该元素出现的次数。返回哈希映射中值为1的键。

知识点:collections.Counter(...):用字典形式为列表中各元素计数。

              字典形式.items():返回可遍历的字典形式的键值对(元组形式即(键,值))。

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        from collections import Counter
        adict = Counter(nums)
        for key,val in adict.items():
            if val == 1:
                return key

3、解题思路:使用异或运算。列表中所有元素进行异或,最终结果就是只出现一次的元素。

(3-1)对列表中所有元素依次异或,并将异或结果累积求和。通过交换律和结合律,出现两次的元素异或结果为0,最终求和结果就是只出现一次的元素。

知识点:functools.reduce(...):对列表中的元素累积求和。

               x ^  y:x与y进行异或运算。

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        from functools import reduce
        return reduce(lambda x,y:x^y,nums)

(3-2)遍历列表,直接对列表中所有元素依次进行异或。

知识点:res ^= x 即 res = res ^ x :两个元素进行异或运算并将结果赋值给res变量。

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        res = 0
        for x in nums:
            res ^= x         # res ^= x 即 res = res ^ x 
        return res


# 列表只有一个元素时,直接返回该元素。不用赋值并for循环,稍微快一点。
class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        if len(nums) == 1: return nums[0]       # 只比上面增加这一步
        res = 0
        for x in nums:
            res = res ^ x 
        return res

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

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

相关文章

【实战项目】高并发内存池(下)

我们上篇文章(高并发内存池(上))介绍了向高并发内存池申请资源的整个过程,本篇文章我们将会对申请后的空间资源释放的整个流程。同时也会对我们自己实现的内存池进行性能测试和优化。 文章目录 一、thread cache 回收资…

CentOS 7 安装和配置java环境

1 安装包准备 安装包可以通过下面地址进行版本选择安装: https://www.oracle.com/java/technologies/downloads/#java8 2 正式开始安装 本次分享的安装方法直接通过编辑/etc/profile文件实现java的安装 2.1 新建安装包存放目录 mkdir /java cd /java/ 2.2 解压安…

Mac电脑窗口管理Magnet中文 for mac

Magnet是一款Mac窗口管理工具,它可以帮助用户轻松管理打开的窗口,提高多任务处理效率。以下是Magnet的一些主要特点和功能: 分屏模式支持:Magnet支持多种分屏模式,包括左/右/顶部/底部 1/2 分屏、左/中/右 1/3 分屏、…

分享一下怎么做一个投票小程序链接

在这个数字化时代,微信小程序已经成为了我们生活中不可或缺的一部分。而投票小程序链接,更是具有广泛的应用场景和巨大的市场潜力。本文将详细介绍如何制作一个投票小程序链接,帮助大家了解其意义、设计思路、实现方法、亮点突出以及如何推广…

【notion enhancer安装】一个强大的笔记软件,可以实现侧边目录的notion

官网地址: https://notion-enhancer.github.io/getting-started/installation/ 介绍 众所周知,notion作为一款强大的笔记软件,深受广大uu的热爱。但是在使用普通版本的时候 ,notion不能实现目录的侧边导航,对于很长的…

MyBatis Plus公共字段自动填充

MyBatis Plus公共字段自动填充,也就是在插入或者更新的时候为指定字段赋予指定的值,使用它的好处就是可以统一对这些字段进行处理,避免了重复代码。 例如,像每个table中都有createTime,createUser,updateTime,updateUser这些字段…

信奥赛一本通算法 第二章数据排序(【例2.2】车厢重组、谁考了第k名、奇数单增序列、成绩排序、奖学金、分数线划定、整数奇偶排序)

数据算法 1310:【例2.2】车厢重组1176:谁考了第k名1177:奇数单增序列1178:成绩排序1179:奖学金1180:分数线划定1181:整数奇偶排序 1310:【例2.2】车厢重组 这道题简单,题…

黑马头条:app端文章查看

黑马头条:app端文章查看 黑马头条:app端文章查看文章列表加载1. 需求分析2. 表结构分析3. 导入文章数据库3.1 导入数据库3.2 导入对应的实体类 4. 实现思路5. 接口定义6. 功能实现6.1:导入heima-leadnews-article微服务,资料在当天…

无线通信的未来:WiFi HaLow的低功耗、超长距离革命

WiFi HaLow,一项创新性的Wi-Fi协议,致力于解决不断增长的物联网需求,兼具低功耗和超长距离覆盖的特点。建立在IEEE 802.11ah标准的基础上,WiFi HaLow为物联网开发者提供了全方位的无线解决方案,以满足他们对能源效率、…

Python报错:‘EagerTensor‘ object has no attribute ‘reshape‘

在使用RPython时,发现python代码部分报错:‘EagerTensor‘ object has no attribute ‘reshape‘ 如何解决? 使用np.array 转换为array,再进行reshape 参考: ‘EagerTensor‘ object has no attribute ‘reshape‘处…

由浅入深,详细总结 Spring 八种加载 Bean 的方式

文章目录 方式一:XML 方式声明 bean方式二:XML 注解方式声明 bean方式三:注解方式声明配置类扩展一:Bean 返回的对象和真实 Bean 对象可能不是一个扩展二:加载配置类的同时,加载配置文件(系统迁…

堆体扫描点云体积计算实现思路分享

做了一个初步的 demo 实验, 计算一堆沙子或者煤堆这种物体的扫描点云的体积 思路就是分块计算每个小的立方体的体积,然后累加,wechat 394467238, 具体的实现细节略微麻烦一点,代码暂时不放了

C# 压缩图片

.net下跨平台图像处理 https://github.com/mono/SkiaSharp 安装包 skiasharp 效果 代码 ImageCompression.cs using SkiaSharp;namespace ImageCompressStu01 {/// <summary>/// 图片压缩/// </summary>public class ImageCompression{/// <summary>/…

Mysql第四篇---数据库索引优化与查询优化

文章目录 数据库索引优化与查询优化索引失效案例数据准备1. 全值匹配2 最佳左前缀法则(联合索引)主键插入顺序4 计算、函数导致索引失效5 类型转换(自动或手动)导致索引失效6 范围条件右边的列索引失效7 不等于(!或者<>)索引失效8 is null可以使用索引, is not null无法使…

数据结构之栈的讲解(源代码+图解+习题)

我们在学习过顺序表和链表之后&#xff0c;了解了使用数组存储数据&#xff0c;使用结构体来存储数据和有关的指针&#xff0c;这些都是底层的东西&#xff0c;链表是靠指针的链接&#xff0c;顺序表是靠数组的下标才能得以实现增删查改。众多数据结构其实底层都离不开数组&…

开发ABAP程序中的错误

select语句错误 select abc from <透明表> into table <内表> where <条件>. *字段必须要一一对应.否则会报错或者值平移 select * from <透明表> into corresponding fields of table <内表> where <条件>. *虽然可以自动匹配可以避免…

分享一下门店服务预约系统怎么做

随着科技的不断发展&#xff0c;越来越多的企业开始注重提高服务质量和效率。其中&#xff0c;门店服务预约系统成为了许多企业的选择。本文将探讨门店服务预约系统的意义、设计思路、实现方法、系统测试以及拓展案例&#xff0c;并总结门店服务预约系统设计和实现的重要性。 一…

使用pycharm远程连接到Linux服务器进行开发

预计达到的效果 本地的 PyCharm 能达到和远程服务器之间的文件同步&#xff1b;本地的 PyCharm 能够使用远程服务器的开发环境&#xff1b; 环境配置 PyCharm&#xff1a;PyCharm 2021.3 (Professional Edition)Linux服务器&#xff1a;Ubuntu20.04 步骤 1.进入配置项 配…

设计模式中的黄金原则:引领你的代码风格,提升可维护性与扩展性

中国的先贤说过: 有道无术,术可求.有术无道,止于术. 术指的是技能、技术或方法&#xff0c;而道指的是原则、道德、智慧和理念。 西方古代的哲人也说过同样的话: 智慧之路从感性开始&#xff0c;却终极于理性.为什么要说设计原则呢, 因为设计模式通常需要遵循一些设计原则&…

Docker GitLab-Runner安装

Docker GitLab-Runner安装 GitLab-Runner安装 问题合集GitLab 域名的配置修改Runner容器内注册失败&#xff0c;提示 dial tcp: lookup home.zsl0.com on 192.168.254.2:53: no such host GitLab-Runner 安装 拉去gitlab/gitlab-runner镜像 docker pull gitlab/gitlab-runne…