Leetcode 2998. Minimum Number of Operations to Make X and Y Equal

  • [Leetcode 2998. Minimum Number of Operations to Make X and Y Equal](#Leetcode 2998. Minimum Number of Operations to Make X and Y Equal)
    • [1. 解题思路](#1. 解题思路)
    • [2. 代码实现](#2. 代码实现)

1. 解题思路

这一题就是一个比较简单的动态规划的题目了。

显然,如果x小于y,那么要使之变成y,就只能通过不断加一的方式获得,我们可以直接给出答案。

而如果x大于y,那么,要使之变成y,我们就需要在以下5种情况当中选择最小值:

  1. 直接通过减一变成y
  2. 先将其减为第一个能被5整除的数,然后整除5之后进行迭代;
  3. 先将其加到第一个能被5整除的数,然后整除5之后进行迭代;
  4. 先将其减为第一个能被11整除的数,然后整除11之后进行迭代;
  5. 先将其加到第一个能被11整除的数,然后整除11之后进行迭代;

此时,我们通过一个动态规划的算法就能快速实现了。

2. 代码实现

给出python代码实现如下:

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。

相关推荐
LluckyYH12 小时前
代码随想录Day 58|拓扑排序、dijkstra算法精讲,题目:软件构建、参加科学大会
算法·深度优先·动态规划·软件构建·图论·dfs
Espresso Macchiato15 小时前
Leetcode 3306. Count of Substrings Containing Every Vowel and K Consonants II
leetcode·滑动窗口·leetcode medium·leetcode 3306·leetcode周赛417
Espresso Macchiato2 天前
Leetcode 3301. Maximize the Total Height of Unique Towers
leetcode·leetcode medium·leetcode双周赛140·leetcode 3301
ganjiee00072 天前
力扣(leetcode)每日一题 983 最低票价 |动态规划
算法·leetcode·动态规划
EQUINOX13 天前
思维+贪心,CF 1210B - Marcin and Training Camp
算法·数学建模·动态规划
_GR3 天前
每日OJ题_牛客_JOR26最长回文子串_C++_Java
java·数据结构·c++·算法·动态规划
源代码•宸4 天前
小米2025届软件开发工程师(C/C++/Java)(编程题AK)
c语言·c++·经验分享·算法·动态规划
Jcqsunny4 天前
[dp] 小信走迷宫
算法·前缀和·动态规划·dp
Espresso Macchiato5 天前
Leetcode 3302. Find the Lexicographically Smallest Valid Sequence
leetcode medium·lcs·leetcode 3302·leetcode双周赛140·最大公共子序列
mengsi555 天前
最大正方形 Python题解
开发语言·python·leetcode·前缀和·动态规划·洛谷·acwing