Re: [闲聊] 每日leetcode

楼主: Rushia (みけねこ的鼻屎)   2024-04-27 12:34:12
https://leetcode.com/problems/freedom-trail/description
514. Freedom Trail
https://assets.leetcode.com/uploads/2018/10/22/ring.jpg
给你一个字串ring表示一个转盘的文字顺序,key 表示密码,我们可以有两个操作:
1. 把转盘往左或往右
2. 把转盘当前的密码输入
求出最少要几个操作可以把密码输入完,题目保证密码字符一定存在于ring
思路:
1.输入密码最少要len(key)次
2.我先往是否可以贪婪想,也就是局部最佳解是否可以得到全域最佳解,反例:
A
B C
B
如果左边的B比较近 右边的B比较远但是离C比较近 他会是更佳解 所以局部最佳解
不能决定全域最佳解 需要穷举
3.模拟转盘往左和往右,最少要转的步数为:
MIN(
往左转找到key需要的步数 + 从左边位置继续找下一个,
往右转找到key需要的步数 + 从右边位置继续找下一个
)
因为会有许多重复步骤所以需要DP(记忆化搜索)
4.返回输入密码的次数+转盘的最小次数
py code:
作者: SecondRun (雨夜琴声)   2024-04-27 12:40:00
大师
作者: oinishere (是oin捏)   2024-04-27 12:42:00
我好痛苦 怎么是hard
作者: JIWP (JIWP)   2024-04-27 12:43:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com