【每日一题】【LeetCode】【第十天】只出现一次的数字

news2024/11/20 15:30:11

解决之路= =

题目描述

在这里插入图片描述

测试案例(部分)

在这里插入图片描述

第一次

和昨天的题目有点类似,昨天是找重复,今天是找不重复。那直接按昨天第二次思路来写这次的代码。

class Solution(object):
    def singleNumber(self, nums):
        nums.sort()
        for i in range(len(nums) - 1):
            if nums[i] != nums[i+1]:
                return nums[i]

测试正确,提交,报错了。

在这里插入图片描述
未通过案例是[4,1,2,1,2],排序后是[1,1,2,2,4],判断到下标11和下标22不相等,所以输出了1,导致了错误。

第二次

想想如果避免这个错误,得想个法子跳过一些下标。想了想,方案不可行,太复杂了,设计如何跳过两个重复的元素倒还好,如果三个重复、或者其他情况,可能就不适用了。

那先昨天第一次的代码能跑通嘛?想了想,也跑不通理由还是一样。想想其他思路。

做数学题从小就教,一直想不到办法就重新看看题。重新看了下题:

除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

也就是说,只会出现重复两次的情况和不重复的情况两种,没有其他情况。那么这么说,我们之前的思路是可以往下完善的。不过,为了避免第一次的错误,我们得跳下标,不过,删除相同元素也是间接的跳下标。

class Solution(object):
    def singleNumber(self, nums):
        index = 0
        nums.sort()
        try :
            while nums[index] == nums[index + 1]:
                nums.pop(index)
                nums.pop(index)
            return nums[0]
        except IndexError:
            return nums[0]

测试正确,提交,成功了,不过耗时较大。

在这里插入图片描述

第三次

woc,评论区很多都在说用“异或”运算解决。之前学计组和数字逻辑,了解过异或运算,这次还是第一次用异或运算来解决实际问题。

异或运算的数学符号:⊕,英文符号为:XOR,在python中和and、or一样,xor也是一种逻辑运算
a⊕b = (¬a ∧ b) ∨ (a ∧¬b)
如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。

在这里插入图片描述

关于异或运算的运算律

  1. 交换律:a ^ b ^ c <=> a ^ c ^ b
  2. 任何数于0异或为任何数 0 ^ n => n
  3. 相同的数异或为0: n ^ n => 0

[2,2,1]举例,循环到最后就是这个2^2^1的结果,按照上面的三个运算律,就可以推出答案:
2^2^1=0^1=1,就是最后的没有重复的元素!

再来一个长的,[4,1,2,1,2],经过循环,最后得到4^1^2^1^2,根据交换律,=1^1^2^2^4=0^0^4=4

这样,就可以理解了,只要列表中有两两重复的元素,那他们两两消除,像消消乐一样,最后剩下的,就是那个唯一的不重复的元素。

杂谈

偶然往下看了看评论区,看到一个挺有意思的思路的。如果有两个重复的元素,那么他们加起来就可以被2整除。这样就可以去判断是否有两个重复元素的情况了。
在这里插入图片描述
不过,这个解决方案不符合题目要求,评论区有人指出该算法的时间复杂度为O(nlog2n),不是线性的时间复杂度。

但这个方法思路也挺好的,也算学到了一个思路。

附件

在这里插入图片描述

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

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

相关文章

在线计算lncRNA-mRNA共表达相关系数,并使用cytoscape绘制共表达网络图

长链非编码RNA(Long noncoding RNA)是一类长度大于200 nt&#xff0c;不编码蛋白质的RNA。LncRNA的功能多样&#xff0c;如图1所示&#xff0c;A&#xff1a;充当蛋白质和染色质的连接因子&#xff0c;引起染色质重构&#xff08;chromatin remodeling&#xff09;&#xff1b;…

内存函数细节及实现

1、memcpy内存拷贝 不仅可以拷贝&#xff0c;还可以拷贝整型、结构体等&#xff0c;因为直接拷贝了内存。 因为不知道要拷贝的类型是什么&#xff0c;所以都用void*来接收。num是拷贝的字节数 拷贝时可任意选择dest&#xff0c;src&#xff0c;以及字节数。返回void*类型的指…

01什么是FPGA?

FPGA 是一种硬件可重构的体系结构。它的英文全称是Field Programmable Gate Array&#xff0c;中文名是现场可编程门阵列。 FPGA就是一个可以通过编程来改变内部结构的芯片&#xff0c;FPGA常年来被用作专用芯片&#xff08;ASIC&#xff09;的小批量替代品&#xff0c; 同时也…

PMP考试流程是怎么样的?

别的问题我可能不太了解&#xff0c;但考试流程我绝对是非常清楚了&#xff01;话不多说&#xff0c;直接放流程给到大家&#xff0c;好歹通过考试了&#xff0c;基本的情况还是能给大家讲解一下的。希望能够给有需要的同学提供点帮助。 先把考试的流程看仔细了&#xff0c;之…

核心乐理---音程名称

定义 音程是连个音之间的距离&#xff0c;是音乐中的距离&#xff0c;可以便于我们描述音符间的距离&#xff0c;便于与他人进行沟通交流。 就好像是厘米&#xff0c;米这些这些物理中的长度单位一样 度 度是音程的单位。 从一个音的名字念到另一个音的名字&#xff0c;一共念…

瑞幸“复制”拼多多

&#xff08;图片来源于网络&#xff0c;侵删&#xff09; 来源 | 螳螂观察 文 | 叶小安 在电商界&#xff0c;拼多多杀出阿里京东围剿重围&#xff0c;奠定现今电商行业“猫狗拼”三分天下的格局&#xff0c;这是多少后辈们参考的范本。 在咖啡界&#xff0c;瑞幸凭借低价…

ESP32基于Arduino框架,SD卡+MAX98357模块+MP3播放器

ESP32基于Arduino框架&#xff0c;SD卡MAX98357模块MP3播放器&#x1f3ac;原创作者的制作教程讲解以及源码&#xff1a; 35 ESP32之简单的完整功能SD卡MP3播放器的制作讲解&#xff08;ESP32-audioI2S库介绍&#xff09;- 基于Arduino链接&#xff1a;https://pan.baidu.com/s…

黑产系列02-黑产画像

黑产无利不起早&#xff0c;在利益的驱动下黑产几乎是屡禁不止&#xff0c;作为风控从业人员我们需要全方位的了解黑产&#xff0c;了解我们的对手&#xff0c;才能知己知彼&#xff0c;接下来我将结合我多年风控经验以及查阅的相关的资源&#xff0c;全方位介绍下黑产以及他们…

matplot绘制动图

import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation import numpy as np plt.rcParams[axes.unicode_minus] False plt.rcParams[font.sans-serif] SimHei# 准备数据 x np.linspace(0,3*np.pi,100) y1 np.sin(x) y2 np.cos(x)#创建画布和子图 …

Python用yield from 实现异步协程爬虫

文章目录一、什么是yield二、yield于列表的区别三、yield from 实现协程一、什么是yield 如果还没有怎么用过的话&#xff0c;直接把yield看做成一种特殊的return&#xff08;PS&#xff1a;本质 generator&#xff08;生成器&#xff09;&#xff09; return是返回一个值然后…

Python网络编程中getservbyport和getservbyname函数的用法

在Python的网络编程中&#xff0c;getservbyport()函数和getservbyname()函数是socket模块中的两个函数&#xff0c;因此在使用这两个函数时&#xff0c;需要导入socket模块。1 getservbyname()函数getservbyname()函数的作用是通过指定服务的名称获取该服务对应的端口号。相关…

BI工具+方案,这是要将大数据分析包了的节奏啊

BI工具是一个为企业提供大数据智能可视化分析功能板块的平台。虽然它提供了包括智能钻取、内存行列计算、多维动态分析等多种智能数据分析功能板块&#xff0c;但工具毕竟是工具&#xff0c;要真正地为企业所用&#xff0c;还需要针对企业的业务发展情况、数据分析需求等制定数…

用ode45解一个带有积分的微分方程(integro-differential equations)

一、问题提出: 这个方程来源于mathworks的论坛 l 这种方程叫 integro-differential equations ,大致是带有 integral term的微分方程。积分肯定是定积分,这类方程有的是变上限的积分,上下限是x或者其他微分的函数。 按照惯例,先分析。积分区间是0-1,x是自变量,y是应…

2022年终总结——工作第五年

2022是本命年&#xff0c;对我来说今年勉强可以算得上是一切顺利吧。 前几年的年终总结 先验收下去年的期望吧 去年的期望还是挺多的嗷&#x1f643; 1、关于订婚和云南一周游 ✅ 今年大概2月底开始上海疫情开始变得很严重&#xff0c;然后就是漫长的三个月封控&#xff0c;…

1.1.3 java学习的环境准备

文章目录1 相关文件准备及下载1.1 JDK下载1.2 开发工具下载1.2.1 eclipse1.2.2 idea2 JDK安装及配置2.1 JDK配置方法一2.2 JDK配置方法二3 eclipse软件安装及配置4 JDK JRE JVM解释&#xff1a;5 关于手写代码1 相关文件准备及下载 1.1 JDK下载 Oracle公司为常见的计算机系统…

【论文速递】ECCV2022 - ConMatch:置信度引导的半监督学习

【论文速递】ECCV2022 - ConMatch&#xff1a;置信度引导的半监督学习 【论文原文】&#xff1a;ConMatch: Semi-Supervised Learning with Confidence-Guided Consistency Regularization 获取地址&#xff1a;https://arxiv.org/abs/2208.08631博主关键词&#xff1a; 半监…

P8630 [蓝桥杯 2015 国 B] 密文搜索

题目描述 福尔摩斯从 X 星收到一份资料&#xff0c;全部是小写字母组成。 他的助手提供了另一份资料&#xff1a;许多长度为 88 的密码列表。 福尔摩斯发现&#xff0c;这些密码是被打乱后隐藏在先前那份资料中的。 请你编写一个程序&#xff0c;从第一份资料中搜索可能隐藏密码…

八大排序算法(C语言实现)

文章目录&#xff1a;1.排序的概念2.常见八大排序算法3.插入排序3.1直接插入排序3.2希尔排序4.选择排序4.1直接选择排序4.2.堆排序5.交换排序5.1冒泡排序5.2快速排序5.2.1快排递归实现5.2.1.1Hoare法&#xff08;霍尔法&#xff09;5.2.1.2挖坑法5.2.1.3双指针法5.2.2快排迭代实…

最火的聊天回复神器

客服高效回复容易收获用户的好感&#xff0c;也更容易将客户转化成功&#xff0c;借助聊天回复神器&#xff0c;可以助力客服高效快捷地回复。 前言 经常网购的用户&#xff0c;一定会发现在联系客服咨询产品相关问题时&#xff0c;刚把问题发出去&#xff0c;马上就可以收到客…

three.js入门-一些基础理论|大帅老猿threejs特训

前言 参加了threejs直播课。 本篇文章为入门理论部分笔记。 可以学到什么&#xff1a; 一、软能力 1. 系统全流程理解web3D 应用/数字孪生/元宇宙&#xff0c;程序开发与3D美术资源制作 2. 建立与3D美术团队良好沟通协作能力 3. 良好把控3D画面效果和性能平衡 4. 培养程…