【Leetcode-9】
一、题目:回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
二、代码:
def isPalindrome(self, x: int) -> bool: """ 可转为字符串再判断,但需额外空间。 考虑取数字的后一半,与前一半进行对比,若相等则为回文数 1.负数不可能为回文数, 2.当数字后一半>=前一半时已经取得后一半数字,后一半可能多一位 3.当最后一位为0时,用last//10得到前面为0,会认为相等,但第一位不可能为0,所以最后一位为0直接返回False 4.只有1个0需要返回True """ if x == 0: return True if x < 0 or x % 10 == 0: return False last = 0 while last < x: last = last*10 + x%10 x //= 10 if last == x or last // 10 == x: return True return False
【Leetcode-136】
一、题目:只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
二、代码:
def singleNumber(self, nums: List[int]) -> int: ans = nums[0] for num in nums[1:]: ans = ans ^ num return ans
【Leetcode-326】
一、题目:3的幂
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。
二、代码:
def isPowerOfThree(self, n: int) -> bool: """ 若为3的幂,则一直除3最后商为1,特殊情况是3的0次方为1 """ if n == 1: return True if n % 3 != 0: return False while n >= 3: n = n / 3 if n == 1: return True else: return False
【Leetcode-338】
一、题目:比特位计数
给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。
二、代码:
def countBits(self, num: int) -> List[int]: res = [] for item in range(num+1): t = 0 p = item while p: p = p & (p-1) t += 1 res.append(t) return res
【Leetcode-461】
一、题目:汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x
和 y
,计算它们之间的汉明距离。
二、代码:
def hammingDistance(self, x: int, y: int) -> int: xor = x ^ y n = 0 while xor: xor = xor & (xor-1) n += 1 return n
【Leetcode-470】
一、题目:用rand7实现rand10
已有方法 rand7
可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10
生成 1 到 10 范围内的均匀随机整数。
二、代码:
def rand10(self): """ 基本原理: 0:randX可均匀生成1-X 1.(randY-1)*X + randX可生成rand(X*Y) 2.拒绝采样后生成的概率依然是相同的 3.randX是均匀分布时,randX%n+1依然是randn均匀分布,X需要能整除n """ while True: # 直到生成满足条件的 x = rand7() y = rand7() num = (y-1)*7 + rand7() # 1-49 if num <= 40: return num % 10 + 1 # num 41-49 num = num - 40 # rand9 num = (num-1)*7 + rand7() # rand63 if num <= 60: return num % 10 + 1 # num 61-63 num = num - 60 # rand3 num = (num-1)*7 + rand7() # rand21 if num <= 20: return num % 10 + 1
原文:https://www.cnblogs.com/EstherLjy/p/14672436.html