type
status
date
slug
summary
tags
icon
password
一、前言
本次刷题的题目是:《只出现一次的数字》
二、题目描述


三、解题思路
方法一:使用range进行细化切割比较
因为这道题直接说明了其余元素出现了两次而不是更多次。而且只是找到那一个单的值,不用返回原来的列表。所以我想的是将整个列表切割成只包含两个元素的小列表。所以可以用到range跳步进行比较。
range:range(start,end,step);start表示计数开始,默认从0开始;end表示结束,但是不包括stop;step表示步长默认为1
方法二:直接使用异或
不知道谁想出来的天才想法!
因为两个相同的数字异或为0,0和任何数字a异或都为a,异或又满足交换律。
用公式表达就是这样的:a^a=0 0^a=a a^b^a=a^a^b=b
所以对照这道题来说:就会将剩余的那个数给选择出来
四、解题脚本
方法一:
方法二:
五、出现的结果

- 作者:JucanaYu
- 链接:https://jucanayu.top/article/1cd7ab71-7095-8074-b6d5-e5304a72c74d
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。