本文介绍: Leetcode 2998. Minimum Number of Operations to Make X and Y Equal
1. 解题思路
这一题就是一个比较简单的动态规划的题目了。
显然,如果x小于y,那么要使之变成y,就只能通过不断加一的方式获得,我们可以直接给出答案。
而如果x大于y,那么,要使之变成y,我们就需要在以下5种情况当中选择最小值:
- 直接通过减一变成y
- 先将其减为第一个能被5整除的数,然后整除5之后进行迭代;
- 先将其加到第一个能被5整除的数,然后整除5之后进行迭代;
- 先将其减为第一个能被11整除的数,然后整除11之后进行迭代;
- 先将其加到第一个能被11整除的数,然后整除11之后进行迭代;
此时,我们通过一个动态规划的算法就能快速实现了。
2. 代码实现
给出python代码实现如下:
class Solution:
def minimumOperationsToMakeEqual(self, x: int, y: int) -> int:
@lru_cache(None)
def dp(x):
if x <= y:
return y-x
r5, r11 = x % 5, x % 11
ans = min(
1 + r5 + dp((x-r5) // 5),
1 + 5-r5 + dp((x+5-r5) // 5),
1 + r11 + dp((x-r11) // 11),
1 + 11-r11 + dp((x+11-r11) // 11),
x-y
)
return ans
ans = dp(x)
return ans
提交代码评测得到:耗时32ms,占用内存17.4MB。
原文地址:https://blog.csdn.net/codename_cys/article/details/135443478
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_53460.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。