十五天的时间,刷完了所有的简单题,避免遗忘,所以开始简单题的二刷,第一遍刷题的时候过得速度比较快,因为我觉得基础不好的我,不要硬着头皮去想最优的方法,而是应该尽量去学一些算法思想,所以每道题只给自己5-10分钟的时间想,想不出来的就去找相关的答案,所以刷的比较快。二刷的时候按照leetcode官方给出的题目分类展开,同时,将解题思路记录于加深印象。
想要一起刷题的小伙伴,我们一起加油吧!
我的github连接:https://github.com/princewen/leetcode_python
7. 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
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
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)
采用二分搜索的思路
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
采用除余结合的思想,但是要考虑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
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
直接使用数学公式即可: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,加我要写好备注哟!: