算法通关村——数字与数学问题解析

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))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值