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
}
相关推荐
leing12319 小时前
14. 最长公共前缀-leetcode
linux·服务器·leetcode
梓德原19 小时前
【C语言】C语言如何向系统接要存
java·c语言·算法
却话巴山夜雨时i19 小时前
84. 柱状图中最大的矩形【困难】
算法
春卷同学19 小时前
Electron for 鸿蒙PC开发的经典推箱子游戏
游戏·electron·harmonyos
浅川.2519 小时前
xtuoj Interprime
算法
兩尛19 小时前
HJ52 计算字符串的编辑距离
java·开发语言·算法
cici1587419 小时前
基于LCMV的自适应波束形成算法仿真实现
算法
know__ledge19 小时前
吴恩达机器学习2022 -- Course1 -- Week3(分类问题)
人工智能·算法·目标检测·机器学习·分类
会员果汁19 小时前
优先级队列-C语言
c语言·数据结构·算法
却话巴山夜雨时i19 小时前
347. 前 K 个高频元素【中等】
数据结构·算法·leetcode