【LeetCode热题100(76/100)】划分字母区间

题目地址: 链接

思路:

  1. 使用map记录最远字符串的地址
  2. 重新遍历,如果当前内容等于最远字符串地址,那么入队列
ts 复制代码
function partitionLabels(s: string): number[] {
    let ans = [];
    const n = s.length;
    const map = new Map();
    for(let i = 0; i < n; i ++) {
        map.set(s[i], i);
    }
    let maxIdx = 0;
    for(let i = 0; i < n; i ++) {
        let q = map.get(s[i]);
        maxIdx = Math.max(maxIdx, q);
        if(maxIdx <= i) {
            ans.push(i);
            maxIdx ++;
        }
    }
    ans = ans.map((num, idx) => {
        if(idx) return num - ans[idx - 1];
        else return num + 1
    })
    return ans;
};
相关推荐
QiLinkOS4 分钟前
《打破“用爱发电”:一种基于 Gitee 与时间戳的开源权益分配机制探索》
c语言·数据结构·c++·科技·算法·gitee·开源
松间听晚37 分钟前
Agentic RL 环境和代码学习:以HGPO为例
算法
智者知已应修善业1 小时前
【51单片机用T0定时器方式1,实现0.5S的时间间隔实现第一次一个灯亮、第二次二个灯亮,直到全部灯亮,然后重复整个过程】2023-12-29
c++·经验分享·笔记·算法·51单片机
小许同学记录成长1 小时前
几何体编辑与布尔运算
算法·无人机
fanged1 小时前
简单看看3A算法2(TODO)
算法
智者知已应修善业1 小时前
【51单片机4位静态数码管显示1234】2023-11-14
c++·经验分享·笔记·算法·51单片机
♡すぎ♡1 小时前
镜面 IBL 预过滤贴图的计算
算法·计算机图形学·贴图·pbr
Lsk_Smion2 小时前
力扣实训 _ [200].岛屿数量
算法·leetcode·深度优先
Boom_Shu2 小时前
长方形的关系
数据结构·c++·算法
ZhengEnCi2 小时前
O07-银行家算法
算法