【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;
};
相关推荐
weixin_3954489110 分钟前
main.c_cursor_0129
前端·网络·算法
CS创新实验室22 分钟前
《计算机网络》深入学:路由算法与路径选择
网络·计算机网络·算法
一条大祥脚22 分钟前
ABC357 基环树dp|懒标记线段树
数据结构·算法·图论
tod11323 分钟前
力扣高频 SQL 50 题阶段总结(四)
开发语言·数据库·sql·算法·leetcode
naruto_lnq34 分钟前
C++中的桥接模式
开发语言·c++·算法
苦藤新鸡34 分钟前
50.腐烂的橘子
数据结构·算法
想进个大厂40 分钟前
代码随想录day32 动态规划01
算法·动态规划
j445566111 小时前
C++中的职责链模式高级应用
开发语言·c++·算法
uesowys1 小时前
Apache Spark算法开发指导-Decision tree classifier
算法·决策树·spark
池央1 小时前
贪心算法-最大数
算法·贪心算法