数位算法
快速幂
#快速幂
class Solution:
def myPow(self, x: float, n: int) -> float:
a = 1
flag = 1
if n<0:
flag = 0
n = abs(n)
while n:
if n&1:
a = a*x
n >>=1
x = x*x
return a if flag else 1/a
只出现一次的数字
class Solution:
def singleNumber(self, nums: List[int]) -> int:
#reduce对后面的函数进行累积
return reduce(lambda x,y: x^y ,nums)
快乐数
class Solution:
def isHappy(self, n: int) -> bool:
# 初始化 visited
visited = set()
# 当 n != 1,并且没见过 n 时进行判断
while n != 1 and n not in visited:
# 把 n 放入 visited
visited.add(n)
# 计算下一轮的数字
nxt = 0
# 计算 n 的各位数字平方和
while n != 0:
nxt += (n % 10) ** 2
n //= 10
# 把下一轮的数字设定为 n
n = nxt
# 判断 n 的最终结果是否为 1
return n == 1
计数质数
class Solution:
def countPrimes(self, n: int) -> int:
if n<2:
return 0
isprime = [1]*n
isprime[0] = isprime[1] = 0
for i in range(2,int(n**0.5)+1):
if isprime[i]:
#i*i到n的以i为间隔的(n-1-i*i)//i +1个数全部赋给0
#也就是i这个数的倍数全部为0
isprime[i*i:n:i] = [0]*((n-1-i*i)//i+1)
return sum(isprime)
汉明距离
class Solution:
def hammingDistance(self, x: int, y: int) -> int:
xor = x ^ y
distance = 0
while xor:
xor &= xor-1
distance +=1
return distance

本文深入探讨了多种高效算法的实现,包括快速幂运算、查找只出现一次的数字、判断快乐数、计算质数数量以及汉明距离计算。通过具体实例展示了算法的精妙之处,为读者提供了丰富的代码实践案例。
2935

被折叠的 条评论
为什么被折叠?



