[LeetCode01]两数之和,只出现一次的数字,多数元素
本文仅作LeetCode hot100刷题记录分享一、两数之和二、只出现一次的数字异或运算题目标准解法1. reducefunctioniterable依次取出序列里的元素不断执行函数。x第一个元素y第二个元素算出结果之后把上一轮结果赋值给xy取下一个元素继续运算。2. lambda就是 Python 里面的匿名函数不用写def、不用给函数起名字适合写简短一次性的函数。lambda是关键字冒号前面输入参数冒号后面只能写一条表达式表达式的结果自动 return 返回不能写 if 语句、for 循环等多行代码lambda 参数列表 : 返回表达式其他解法使用集合存储数字。遍历数组中的每个数字如果集合中没有该数字则将该数字加入集合如果集合中已经有该数字则将该数字从集合中删除最后剩下的数字就是只出现一次的数字。使用哈希表存储每个数字和该数字出现的次数。遍历数组即可得到每个数字出现的次数并更新哈希表最后遍历哈希表得到只出现一次的数字。使用集合存储数组中出现的所有数字并计算数组中的元素之和。由于集合保证元素无重复因此计算集合中的所有元素之和的两倍即为每个元素出现两次的情况下的元素之和。由于数组中只有一个元素出现一次其余元素都出现两次因此用集合中的元素之和的两倍减去数组中的元素之和剩下的数就是数组中只出现一次的数字。三、多数元素题目标准解法方法一哈希表1. 哈希映射用collection.Counter即Python的内置哈希表工具统计数组每个数字出现次数。2.max(可迭代对象key函数)counter.keys()取出所有数字counts.get返回数字的传入次数max函数进行比较。或者2. 字典.get(键默认值)可以安全读取字典里key对应的value不会报KeyError。如果要查找的键不在字典里直接返回默认值。count_dict[num] count_dict.get(num,0)1