leetcode题目及答案python_leetcode Python算法题(20)-----多题

题一:题1

看到这道题的时候我就想把它转换成数字来做,感觉是否有些投机取巧?

class Solution:

def addBinary(self, a, b):

x = int(a, 2)

y = int(b, 2)

z = format(x+y, 'b')

return z

这里把x和y转换成十进制数,求和后又转换为二进制数,format格式化输出。

leetcode的官方解答可以看下,有关于位操作的。

题目二:题2

这道题我用很傻瓜的方法做出来了

class Solution:

def mySqrt(self, x):

r = 0

while r * r <= x:

r += 1

return r-1

运行时间感人。官方解说里有二分法,感觉比较好理解:

class Solution:

def mySqrt(self, x: int) -> int:

l, r, ans = 0, x, -1

while l <= r:

mid = (l + r) // 2

if mid * mid <= x:

ans = mid

l = mid + 1

else:

r = mid - 1

return ans

至于高阶的牛顿迭代法没仔细去看。

题3

这道题我也感觉很简单呀,把nums1倒数的几个数换成nums2里面的数字就行,然后用sort排序。

class Solution:

def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:

if n!=0:

nums1[-n:] = nums2

nums1.sort()

后面发现其实可以直接nums1[:m]+nums2,这样就可以把两个列表合并起来了。

nums1[:] = sorted(nums1[:m] + nums2)

打卡day020

之后会把10~20的仔细整理下,多种解法都看看。Python的特性让我感觉做很多题都是走了捷径/(ㄒoㄒ)/~~

你可能感兴趣的:(leetcode题目及答案python_leetcode Python算法题(20)-----多题)