【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;
};
相关推荐
地平线开发者43 分钟前
Transformer模型部署之性能优化指南
算法
地平线开发者1 小时前
人在途中:从“编译失败”到“模型可落地”——CUDA 自定义算子
算法·自动驾驶
半个落月4 小时前
从递归到快速排序:用 JavaScript 把分治思想讲明白
javascript·算法·面试
小月土星5 小时前
JavaScript 快速排序:从 pivot、双指针到分治思想
javascript·算法·面试
小月土星5 小时前
JavaScript 递归入门:从 1 到 n 求和,再到数组扁平化
javascript·算法·面试
To_OC20 小时前
LC 1 两数之和:面试第一道必考题,暴力解法直接被面试官 pass
javascript·算法·leetcode
鱼鱼不愚与1 天前
《原来如此 | 第01期:为什么导航软件能预测红绿灯倒计时?》
算法
复杂网络1 天前
论最小 Agent 计算机的形态
算法
kisshyshy2 天前
🍦 雪糕、食堂、火车厢:三幅漫画吃透栈、队列与链表
javascript·算法