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ㄒ)/~~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值