3个月用python刷完leetcode600题!-math简单题(一)

十五天的时间,刷完了所有的简单题,避免遗忘,所以开始简单题的二刷,第一遍刷题的时候过得速度比较快,因为我觉得基础不好的我,不要硬着头皮去想最优的方法,而是应该尽量去学一些算法思想,所以每道题只给自己5-10分钟的时间想,想不出来的就去找相关的答案,所以刷的比较快。二刷的时候按照leetcode官方给出的题目分类展开,同时,将解题思路记录于加深印象。
想要一起刷题的小伙伴,我们一起加油吧!
我的github连接:https://github.com/princewen/leetcode_python

7. Reverse Integer

3个月用python刷完leetcode600题!-math简单题(一)_第1张图片
Reverse Integer

这里用到的方法是经典的除余相结合,得到一个数的最后一位简单的方法就是余10,得到这个数的除最后一位之外的n-1位,简单的方法就是除10。这里要注意的地方就是负数首先要先得到它的相反数在进行操作,最后再变为负数。这个题还有一个注意的地方就是别的语言如c++,java中整数有溢出,而python的整数是没有溢出的,所以我们最好手动判断是否溢出。

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        n = x if x > 0 else -x
        res = 0
        while n:
            res = res * 10 + n % 10
            n = n / 10
        if res > 0x7fffffff:
            return 0
        return res if x > 0 else -res

9. Palindrome Number

Palindrome Number

1、如果是负数,直接返回False
2、首先得到这个数的位数count,如果是432,我们就得到100
3、然后用x余10得到最右边一位数,用x除count得到最左边一位数
4、去掉x的左右各一位,count除以100,循环直到x为0

class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if x < 0:
            return False
        count = 1
        while x / count >= 10:
            count = count * 10
        while x:
            left = x % 10
            right = x / count
            if left != right:
                return False
            x = (x % count) / 10
            count = count / 100
        return True

66. Plus One

(见数组简单题(一))

67. Add Binary

3个月用python刷完leetcode600题!-math简单题(一)_第2张图片
Add Binary
class Solution(object):
    def addBinary(self, a, b):
        """
        :type a: str
        :type b: str
        :rtype: str
        """
        if a == '':
            return b
        if b == '':
            return a
        if a[-1] == '1' and b[-1] == '1':
            return self.addBinary(self.addBinary(a[:-1], b[:-1]), '1') + '0'
        elif a[-1] == '0' and b[-1] == '0':
            return self.addBinary(a[:-1], b[:-1]) + '0'
        else:
            return self.addBinary(a[:-1], b[:-1]) + '1'

69. Sqrt(x)

3个月用python刷完leetcode600题!-math简单题(一)_第3张图片
69. Sqrt(x)

采用二分搜索的思路

class Solution(object):
    def mySqrt(self, x):
        """
        :type x: int
        :rtype: int
        """
        if x<=0:
            return 0
        else:
            left = 1
            right = x
            while left <= right:
                mid = (left+right) / 2
                a1 = mid*mid - x
                a2 = (mid-1)*(mid-1) -x
                if a1*a2 <= 0:
                    break
                elif a1 * a2 >0 and a1<0:
                    left = mid+1
                else:
                    right = mid-1
            if a1 == 0:
                return mid
            else:
                return mid-1

168. Excel Sheet Column Title

3个月用python刷完leetcode600题!-math简单题(一)_第4张图片
168. Excel Sheet Column Title

采用除余结合的思想,但是要考虑26%26 为0,所以我们可以先对n-1,再除以26,再加上'A'

class Solution(object):
    def convertToTitle(self, n):
        """
        :type n: int
        :rtype: str
        """
        res = ''
        while n:
            res = chr((n - 1) % 26 + ord('A')) + res
            n = (n - 1) / 26
        return res

171. Excel Sheet Column Number

3个月用python刷完leetcode600题!-math简单题(一)_第5张图片
171. Excel Sheet Column Number

168题逆向思维

class Solution(object):
    def titleToNumber(self, s):
        """
        :type s: str
        :rtype: int
        """
        res = 0
        for num in s:
            res = res * 26 + (ord(num)-ord('A')+1)
        return res

172. Factorial Trailing Zeroes

3个月用python刷完leetcode600题!-math简单题(一)_第6张图片
172. Factorial Trailing Zeroes

直接使用数学公式即可:0的个数= n/5 + n/(5^2)+.......

class Solution(object):
    def trailingZeroes(self, n):
        zeroCnt = 0
        while n > 0:
            n = n/ 5
            zeroCnt += n

        return zeroCnt

202. Happy Number.py

见hash_table简单题(一)

204. Count Primes

见hash_table简单题(一)
如果你喜欢我写的文章,可以帮忙给小编点个赞或者加个关注,我一定会互粉的!
如果大家对leetcode感兴趣,欢迎跟小编进行交流,小编微信为sxw2251,加我要写好备注哟!:


3个月用python刷完leetcode600题!-math简单题(一)_第7张图片
我的微信

你可能感兴趣的:(3个月用python刷完leetcode600题!-math简单题(一))