1.青铜挑战——数字与数学基础问题
1.数字统计专题
1.1符号统计
LeetCode1822:给定一个数组,求所有元素的乘积的符号,如果最终答案是负的返回-1,如果最终答案是正的返回1,如果答案是0返回0
class Solution:
def arraySigh(self, nums):
prod = 1
for i in range(len(nums)):
if nums[i] == 0:
return 0
if nums[i] < 0:
prod = -prod
return prod
if __name__ == "__main__":
nums = [-1, 2, 3, 4, -5]
arraySigh = Solution()
print(arraySigh.arraySigh(nums))
1.2阶乘0的个数
设计一个算法,算出n阶乘由多少个尾随零
2.溢出问题
溢出问题是一个极其重要的问题,只要涉及到输出一个数字,都可能遇到。典型的题目有三个:数字反转,将字符串转成数字和回文数。溢出问题一般不会单独考察
2.1整数反转
LeetCode7:给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围[-2^31, 2^31 - 1],就返回0。假设环境不允许存储64位整数(有符号或无符号)
关键有两点,一个是如何进行数字反转,另一个是如何判断溢出。
2.2字符串转整数
2.3回文数
LeetCode9:给你一个整数x,如果x是一个回文整数,返回true,否则返回false
将数字本身反转,为了避免数字反转可能导致的溢出问题,可以只反转数字的一半
3.进制专题
3.1七进制数
LeetCode504:给定一个整数num,将其转化为7进制,并以字符串的形式输出
class Solution:
def convertToBase7(self, num):
if num < 0:
num *= -1
result = ""
while num > 0:
digit = num % 7
result = str(digit) + result
num //= 7
if num < 0:
result = "-" + result
return result
if __name__ == "__main__":
num = 100
convertToBase7 = Solution()
print(convertToBase7.convertToBase7(num))