今天是力扣——算法入门计划第十四天,
也是最后一天,感谢各位大佬的支持和鼓励
算法路上一起奋斗
目录
🍕题目
🍔思路
每次把 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 >>= 1n & 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