力扣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)

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

相关推荐
再卷也是菜15 分钟前
C++篇(21)图
数据结构·c++·算法
星轨初途19 分钟前
C++入门(算法竞赛类)
c++·经验分享·笔记·算法
灰灰勇闯IT1 小时前
KMP算法在鸿蒙系统中的应用:从字符串匹配到高效系统级开发(附实战代码)
算法·华为·harmonyos
小龙报1 小时前
【算法通关指南:数据结构和算法篇 】队列相关算法题:3.海港
数据结构·c++·算法·贪心算法·创业创新·学习方法·visual studio
csuzhucong1 小时前
一阶魔方、一阶金字塔魔方、一阶五魔方
算法
五花就是菜2 小时前
P12906 [NERC 2020] Guide 题解
算法·深度优先·图论
辞旧 lekkk2 小时前
【c++】封装红黑树实现mymap和myset
c++·学习·算法·萌新
星轨初途2 小时前
C++的输入输出(上)(算法竞赛类)
开发语言·c++·经验分享·笔记·算法
n***F8752 小时前
SpringMVC 请求参数接收
前端·javascript·算法
Liangwei Lin2 小时前
洛谷 P1025 [NOIP 2001 提高组] 数的划分
算法