任务
给定一个列表numbers_list。该列表的元素是从 0 到 100 的非负整数。该列表的编译方式是其中的每个数字(除了 1)出现两次。
应该做什么
编写并编写一个算法,在numbers_list 中查找唯一出现过一次的数字。
这个问题需要从三个方面来解决。解决这个问题的第二种方法有效,我根本不明白如何做1和3。
方法号 1。最明显的方法是获取numbers_list 的第一个元素(索引为零处)并迭代列表以找到其对。如果未找到该对,则第一个元素是所需的单数。如果找到一对,则需要取出第二个元素并再次重复。依此类推,直到找到所需的数字。实现这个算法。
方法 3. 使用 XOR。
请帮帮我。
示例列表:
numbers_list = [0, 1, 3, 4, 7, 98, 3, 1, 98, 7, 16, 16, 4, 0, 42]
按位独占或所有元素:
独家或现场:
由于为列表声明了一小部分非负数,因此您可以对索引列表执行异或操作:
标志不能存储在列表中
f
,而是存储在数字中f
,在Python中,数字是一组位:您可以对列表进行排序并计算它在一行中包含多少个相同元素:
直接(且缓慢)搜索唯一元素:
PS在所有示例中,我都避免导入包。如果导入包,您将为解决问题添加无数选项。
运行tio