今天是力扣——算法入门计划第十四天,
也是最后一天,感谢各位大佬的支持和鼓励
算法路上一起奋斗
目录
🍕题目
🍔思路
每次把 res
左移,把 n 的二进制末尾数字,拼接到结果 res
的末尾。然后把 n 右移
比如:
🍟代码
class Solution: # @param n, an integer # @return an integer def reverseBits(self, n): res = 0 for i in range(32): res = (res << 1) | (n & 1) n >>= 1 return res
res = (res << 1) | (n & 1)
n >>= 1
n & 1
res << 1 res每次左移一位
n >>= 1 n每次右移动一位
🍕题目
🍔集合
使用集合存储数字。遍历数组中的每个数字,如果集合中没有该数字,则将该数字加入集合,
如果集合中已经有该数字,则将该数字从集合中删除,最后剩下的数字就是只出现一次的数字
一加一减的策略
🍟代码
class Solution: def singleNumber(self, nums: List[int]) -> int: one=[] for i in nums: if i not in one: one.append(i) else: one.remove(i) return one[0]
🍔哈希表
使用哈希表存储每个数字和该数字出现的次数。
遍历数组即可得到每个数字出现的次数,最后得到只出现一次的数字
🍟代码
class Solution: def singleNumber(self, nums: List[int]) -> int: harshtable=dict() for i in nums: if i in harshtable: harshtable[i]+=1 else: harshtable[i]=1 for i in harshtable.keys(): if harshtable[i]==1: return i