Python每日一练(20230408)
目录
1. 两数相除 🌟🌟
2. 分割回文串 🌟🌟
1. 两数相除
给定两个整数,被除数 dividend
和除数 divisor
。将两数相除,要求不使用乘法、除法和 mod 运算符。
返回被除数 dividend
除以除数 divisor
得到的商。
整数除法的结果应当截去(truncate
)其小数部分,例如:
truncate(8.345) = 8
以及 truncate(-2.7335) = -2
示例 1:
输入: dividend = 10, divisor = 3 输出: 3 解释: 10/3 = truncate(3.33333..) = truncate(3) = 3
示例 2:
输入: dividend = 7, divisor = -3 输出: -2 解释: 7/-3 = truncate(-2.33333..) = -2
提示:
- 被除数和除数均为 32 位有符号整数。
- 除数不为 0。
- 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。本题中,如果除法结果溢出,则返回 231 − 1。
出处:
https://edu.csdn.net/practice/25023633
代码:
import math
class Solution(object):
def divide(self, dividend, divisor):
if divisor == 0:
return MAX_INT
if dividend == 0:
return 0
isPositive = (dividend < 0) == (divisor < 0)
m = abs(dividend)
n = abs(divisor)
res = math.log(m) - math.log(n)
res = int(math.exp(res))
if isPositive:
return min(res, 2147483647)
return max(0 - res, -2147483648)
if __name__ == '__main__':
s = Solution()
print(s.divide(10, 3))
print(s.divide(7, -3))
输出:
3
-2
2. 分割回文串
给你一个字符串 s
,请你将 s
分割成一些子串,使每个子串都是 回文串 。返回 s
所有可能的分割方案。
回文串 是正着读和反着读都一样的字符串。
示例 1:
输入:s = "aab" 输出:[["a","a","b"],["aa","b"]]
示例 2:
输入:s = "a" 输出:[["a"]]
提示:
1 <= s.length <= 16
s
仅由小写英文字母组成
出处:
https://edu.csdn.net/practice/25023634
代码:
import math
class Solution(object):
def partition(self, s):
"""
:type s: str
:rtype: List[List[str]]
"""
if len(s) == 0:
return []
else:
res = []
self.dividedAndsel(s, [], res)
return res
def dividedAndsel(self, s, tmp, res):
if len(s) == 0:
res.append(tmp)
for i in range(1, len(s) + 1):
if s[:i] == s[:i][::-1]:
self.dividedAndsel(s[i:], tmp + [s[:i]], res)
if __name__ == '__main__':
s = Solution()
print(s.partition("aab"))
print(s.partition("a"))
输出:
[['a', 'a', 'b'], ['aa', 'b']]
[['a']]
3. x 的平方根
实现 int sqrt(int x)
函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4 输出: 2
示例 2:
输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
出处:
https://edu.csdn.net/practice/25023635
代码:
class Solution:
def mySqrt(self, x):
if x < 0:
return 0
if x < 4:
return 1
res = 2 * self.mySqrt(x / 4)
if 0 <= (res + 1) * (res + 1) <= x:
return res + 1
return res
# %%
s = Solution()
print(s.mySqrt(4))
print(s.mySqrt(8))
输出:
2
2
二分法:
class Solution:
def mySqrt(self, x):
left, right = 0, x
res = -1
while left <= right:
mid = (left + right)//2
tmp = mid * mid
if tmp <= x:
res = mid
left = mid + 1
else:
right = mid - 1
return res
🌟 每日一练刷题专栏 🌟
✨ 持续,努力奋斗做强刷题搬运工!
👍 点赞,你的认可是我坚持的动力!
🌟 收藏,你的青睐是我努力的方向!
✎ 评论,你的意见是我进步的财富!
☸ 主页:https://hannyang.blog.csdn.net/
![]() | Golang每日一练 专栏 |
![]() | Python每日一练 专栏 |
![]() | C/C++每日一练 专栏 |
![]() | Java每日一练 专栏 |
相关文章
- 使用Python为中秋节绘制一块美味的月饼
- python-面向对象-13_文件
- 【转载】Python 中 if __name__ == '__main__': 的作用
- Python编程之列表操作实例详解【创建、使用、更新、删除】
- Python实现字符串与数组相互转换功能示例
- python any()和all()用法
- Python每日一练(20230418)
- Python每日一练(20230416)
- Python每日一练(20230322)
- Python每日一练(20230321)
- Python每日一练(20230226)
- Python每日一练(20230224)
- Python每日一练(20230223)
- Python每日一练(20230222)
- Python每日一练(20230313)
- Python每日一练(20230302)
- Python 刷Leetcode题库,顺带学英语单词(49)
- Dockerfile COPY指令:COPY --from作用及其使用示例; python程序的Dockerfile示例
- Python每日一练(数据分析篇)——第35天:中位函数
- Python每日一练(数据分析篇)——第34天:中位函数
- Python每日一练(数据分析篇)——第33天:逻辑运算
- Python每日一练(数据分析篇)——第32天:数据索引
- 100天精通Python(基础篇)——第21天:模块和包
- Python实现决策树回归模型(DecisionTreeRegressor算法)并应用网格搜索算法调优项目实战
- 【华为OD机试Python实现】HJ18 识别有效的IP地址和掩码并进行分类统计(较难)
- python 保存登录状态 cookie
- python之psutil模块(获取系统性能信息(CPU,内存,磁盘,网络)
- 【Leetcode刷题Python】739. 每日温度
- opencv-python视频处理之白闪效果
- p10.第一章 Python基础入门 -- 习题详解(十)
- python 字符串去除中文