标签:直接 https 实现 分数 区别 要求 mat 纠正 罗马
Dec 23, 2019 ~ Dec 29, 2019
Problem 69 Sqrt(x) 实现求解平方根函数Sqrt(x) 题目链接
题目描述:给定一个非负数x,求解该数字的平方根,如果不是小数,则进行取整处理。例如:Sqrt(8) = 2
思路:当 x > 4 时,其平方根必然小于小于其 x/2,因此可以用二分法来确定,判断 mid-1 和 mid+1是因为结果要进行取整,那么要满足如下等式: $ res^2 \leq x \leq (res+1)^2 $。至于 x <= 4 的情况,可以单独判断列出。
通过的代码如下
class Solution:
def mySqrt(self, x: int) -> int:
if x == 0:
return 0
elif x == 1 or x == 2 or x == 3:
return 1
else:
res = 0
left = 0
right = x
mid = (left + right) // 2
while (1):
if mid * mid == x:
res = mid
break
elif mid * mid > x:
if (mid-1) * (mid-1) <= x:
res = mid - 1
break
else:
right = mid - 1
mid = (left + right) // 2
else:
if (mid+1) * (mid+1) > x:
res = mid
break
elif (mid+1) * (mid+1) == x:
res = mid + 1
break
else:
left = mid + 1
mid = (left + right) // 2
return res
本周继续 Review 每个程序员需要知道的97件事(英文名:97 Things Every Programmer Should Know)。原文链接。下面是本周的5个小内容:
Python中字符串方法str.isdecimal()、str.isdigit()、str.isnumeric() 初看很类似,但具体而言还是有一定区别的,具体区别如下:
str.isdecimal():是否仅为十进制数
str.isdigit(): 是否为小数,上标,下标
str.isnumeric():是否为小数,下标,上标,普通分数,罗马数字,货币数字
下面是示例代码:
print("'34'.isdecimal() is " + str('34'.isdecimal())) # True
print("'\u00B2'.isdecimal() is " + str('\u00B2'.isdecimal())) # False
print("'\u00BC'.isdecimal() is " + str('\u00BC'.isdecimal())) # False
print("'34'.isdigit() is " + str('34'.isdigit())) # True
print("'\u00B2'.isdigit() is " + str('\u00B2'.isdigit())) # True
print("'\u00BC'.isdigit() is " + str('\u00BC'.isdigit())) # False
print("'34'.isnumeric() is " + str('34'.isnumeric())) # True
print("'\u00B2'.isnumeric() is " + str('\u00B2'.isnumeric())) # True
print("'\u00BC'.isnumeric() is " + str('\u00BC'.isnumeric())) # True
Code Review 是很重要的,但是很多时候做的并不好,甚至有些地方干脆没有。我认为 Code Review 就好比学生时代互相检查作业一样,但是由于种种原因,code review很难做好,同时,code review也需要一定水平或水平相似的人来做,试想一个水平较低的人去 Review 水平较高的人的代码,发现其代码中潜在问题的可能性较低。
在 Tips 中,str.isdigit()、str.isnumeric()中的上下标、普通分数,罗马数字,货币数字主要指的是 Unicode 编码,而不是 ASCII 码。
标签:直接 https 实现 分数 区别 要求 mat 纠正 罗马
原文地址:https://www.cnblogs.com/mengxinayan/p/12288024.html