Leetcode Math知识点总结

  • 728. Self Dividing Numbers:返回[left,right+1]区间内所有自分数的列表(自分数即该数%各位上的数=0,含0的数不是自分数), Easy
class Solution(object):
    def selfDividingNumbers(self, left, right):
        """
        :type left: int
        :type right: int
        :rtype: List[int]
        """
        ret = []
        for num in range(left,right+1):
            tmp = num
            flag = True
            while(tmp and flag):
                digit = tmp%10
                if digit == 0 or num%digit!=0:
                    flag = 0
                else:
                    tmp = tmp/10
            if flag:
                ret+=[num]
        return ret
class Solution(object):
    def isHappy(self, n):
        if n<1:
            return False
        elif n==1:
            return True
        hashtable={}
        while n!=1:
            if n in hashtable:
                return False
            else:
                hashtable.setdefault(n,None)
                array=[]
                while n:
                    array.append((n%10)**2)
                    n=n/10
                n=sum(array)
        return True
  • 258. Add Digits:一个数把各个位置数求和,直到得到一个一位数,返回这个数。Easy
    O(1)解法的思想就是,反正高位最后都要加到个位上,那ans>=10就立刻把十位上的数加进去
class Solution(object):
    def addDigits(self, num):
        """
        :type num: int
        :rtype: int
        """
        '''
        #循环或递归解法
        num = str(num)
        while(len(num)>1):
            ans = 0
            for i in num:
                ans +=int(i)
            num = str(ans)
        return int(num)
        '''
        # O(1)解答法
        num = str(num)
        ans = 0
        for n in num:
            ans+=int(n)
            if ans>=10:
                ans=(ans%10)+(ans/10)
        return ans
class Solution(object):
    def titleToNumber(self, s):
        Array_=list(s)
        Array_.reverse()
        s=0
        for i in range(len(Array_)):
            s+=(ord(Array_[i])-ord('A')+1)*(26**i)
        return s
class Solution(object):
    def convertToTitle(self, n):
        dict=['Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y']
        ans=[]
        while n!=0:
            ans.append(dict[n%len(dict)])
            tmp=n%len(dict)
            if tmp==0:
                tmp=len(dict)
            n=(n-tmp)/len(dict)
        ans.reverse()
        s=''.join(ans)
        return s
  • 598. Range Addition II, 每次ops操作会使得[(0,0),(ops[0],ops[1])] 范围的数字增加1, 求最后最大数字的个数。Easy
class Solution(object):
    def maxCount(self, m, n, ops):
        """
        :type m: int
        :type n: int
        :type ops: List[List[int]]
        :rtype: int
        """
        mincol = m
        minrow = n
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值