当前位置: 首页 > article >正文

Golang | Leetcode Golang题解之第514题自由之路

题目:

题解:

func findRotateSteps(ring string, key string) int {
    const inf = math.MaxInt64 / 2
    n, m := len(ring), len(key)
    pos := [26][]int{}
    for i, c := range ring {
        pos[c-'a'] = append(pos[c-'a'], i)
    }
    dp := make([][]int, m)
    for i := range dp {
        dp[i] = make([]int, n)
        for j := range dp[i] {
            dp[i][j] = inf
        }
    }
    for _, p := range pos[key[0]-'a'] {
        dp[0][p] = min(p, n-p) + 1
    }
    for i := 1; i < m; i++ {
        for _, j := range pos[key[i]-'a'] {
            for _, k := range pos[key[i-1]-'a'] {
                dp[i][j] = min(dp[i][j], dp[i-1][k]+min(abs(j-k), n-abs(j-k))+1)
            }
        }
    }
    return min(dp[m-1]...)
}

func min(a ...int) int {
    res := a[0]
    for _, v := range a[1:] {
        if v < res {
            res = v
        }
    }
    return res
}

func abs(x int) int {
    if x < 0 {
        return -x
    }
    return x
}

http://www.kler.cn/a/373987.html

相关文章:

  • 图书管理系统汇报
  • 数组与指针的关系
  • 无人机避障——2D栅格地图pgm格式文件路径规划代码详解
  • QTreeWidget使用记录(2)
  • 基于LORA的一主多从监测系统_4G模块上巴法云
  • vivado-vitis-2024.1 ps_hello_world 实验
  • pip使用
  • 2024年华为OD机试真题---字符串重新排序
  • PETG耗材3d打印技巧
  • 15分钟学 Go 第 21 天:标准库使用
  • Elasticsearch开源仓库404 7万多star一夜清零
  • 数据结构-选择排序笔记
  • PyTorch提供的多GPU数据并行nn.DataParallel
  • Docker Compose --- 管理多容器应用
  • centos7配置keepalive+lvs
  • X2JS: XML与JSON的完美转换工具
  • 基础IO -- 标准错误输出stderr
  • defer和async的区别
  • C#进阶1
  • vue3 ref和reactive踩坑
  • 实现Vue3/Nuxt3 预览excel文件
  • git revert‌和git reset,慎用git revert‌
  • 高阶数据结构--图(graph)
  • 微服务架构设计的初次尝试——基于以太坊智能合约 + NestJS 微服务的游戏社区与任务市场系统:架构设计
  • Android 刘海屏适配指南
  • Python酷库之旅-第三方库Pandas(182)