45. 跳跃游戏 II && 763. 划分字母区间(LeetCode热题100)

45. 跳跃游戏 II - 力扣(LeetCode)

用l,r区间维护当前能跳跃的区间,计算当前区间能跳跃到的最右区间,以此更新r

当r >= len(nums) - 1就可以返回了

go 复制代码
func jump(nums []int) int {
    l, r := 0, 0
    cnt := 0
    for r < len(nums) - 1 {
        max_r := r
        for l <= r {
            max_r = max(max_r, nums[l] + l)
            l++
        }
        r = max_r
        cnt++
    }
    return cnt
}

763. 划分字母区间 - 力扣(LeetCode)

本质是合并区间,记录每个字符最后一次出现位置last

从左往右遍历s,根据last[i]试图扩大l,r区间(初始为0,0),若r == i说明无法扩大区间,维护ans

go 复制代码
func partitionLabels(s string) []int {
    last := [26]int{}
    ans := []int{}
    for i, c := range s {
        last[c - 'a'] = i
    }
    l, r := 0, 0
    for i, c := range s {
        r = max(r, last[c - 'a'])
        if r == i {
            ans = append(ans, r - l + 1)
            l = r + 1
        }
    }
    return ans
}
相关推荐
leing1234 分钟前
14. 最长公共前缀-leetcode
linux·服务器·leetcode
梓德原5 分钟前
【C语言】C语言如何向系统接要存
java·c语言·算法
却话巴山夜雨时i10 分钟前
84. 柱状图中最大的矩形【困难】
算法
春卷同学13 分钟前
Electron for 鸿蒙PC开发的经典推箱子游戏
游戏·electron·harmonyos
浅川.2513 分钟前
xtuoj Interprime
算法
兩尛13 分钟前
HJ52 计算字符串的编辑距离
java·开发语言·算法
cici1587414 分钟前
基于LCMV的自适应波束形成算法仿真实现
算法
know__ledge17 分钟前
吴恩达机器学习2022 -- Course1 -- Week3(分类问题)
人工智能·算法·目标检测·机器学习·分类
会员果汁26 分钟前
优先级队列-C语言
c语言·数据结构·算法
却话巴山夜雨时i29 分钟前
347. 前 K 个高频元素【中等】
数据结构·算法·leetcode