力扣2025.10.19每日一题

用了斐蜀定理

那么看到形如左半边的式子,则可按照这个方向思考。

在本题的运用是,确定能到第一个位置的元素位置,和确定num通过加法操作,能到的最小值。

同时注意对奇数和偶数位置的轮换,也就是说奇数的轮换操作有两个开头,偶数的轮换操作只有一个开头。

学习的灵神代码

代码如下:

python 复制代码
class Solution:
    def findLexSmallestString(self, s: str, a: int, b: int) -> str:
        s = list(map(int,s))
        n = len(s)
        step = gcd(b,n)
        g  = gcd(a,10)
        ans = [inf]
        def modify(start):
            ch = t[start]
            inc = ch%g - ch 
            if inc:
                for j in range(start,n,2):
                    t[j] = (t[j] +inc)%10 
        for  i in range(0,n,step):
            t = s[i:] +s[:i]
            modify(1)
            if step%2 :
                modify(0)
            ans = min(ans,t)
        return ''.join(map(str,ans))

还有就是这个操作很值得注意!!!

如果 gcd(b,n) 是奇数,轮转一次后,原来的偶数下标变成奇数下标。可以先轮转一次,执行累加,再轮转到我们想要的位置。可以视作我们拥有了「对偶数下标执行累加操作」的能力。

作者:灵茶山艾府

链接:https://leetcode.cn/problems/lexicographically-smallest-string-after-applying-operations/solutions/3797297/mei-ju-lun-zhuan-dao-zui-zuo-bian-de-xia-wuu3/

来源:力扣(LeetCode)

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关推荐
那个村的李富贵6 小时前
CANN加速下的AIGC“即时翻译”:AI语音克隆与实时变声实战
人工智能·算法·aigc·cann
power 雀儿7 小时前
Scaled Dot-Product Attention 分数计算 C++
算法
琹箐7 小时前
最大堆和最小堆 实现思路
java·开发语言·算法
renhongxia18 小时前
如何基于知识图谱进行故障原因、事故原因推理,需要用到哪些算法
人工智能·深度学习·算法·机器学习·自然语言处理·transformer·知识图谱
坚持就完事了8 小时前
数据结构之树(Java实现)
java·算法
算法备案代理8 小时前
大模型备案与算法备案,企业该如何选择?
人工智能·算法·大模型·算法备案
赛姐在努力.8 小时前
【拓扑排序】-- 算法原理讲解,及实现拓扑排序,附赠热门例题
java·算法·图论
野犬寒鸦9 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
霖霖总总9 小时前
[小技巧66]当自增主键耗尽:MySQL 主键溢出问题深度解析与雪花算法替代方案
mysql·算法
rainbow68899 小时前
深入解析C++STL:map与set底层奥秘
java·数据结构·算法