当前位置: 首页 > article >正文

DAY35贪心算法Ⅳ 重叠区间问题

452. 用最少数量的箭引爆气球 - 力扣(LeetCode)

class Solution {
public:
    static bool cmp(const vector<int>&a, const vector<int>&b){
        return a[0] < b[0];
    }
    int findMinArrowShots(vector<vector<int>>& points) {
        if(points.size()==0) return 0;
        sort(points.begin(),points.end(),cmp);
        int result=1;
        for(int i=1;i < points.size();i++){
            if(points[i][0] > points[i-1][1]){
                //不挨着,需要多射一箭
                result++;
            }
            else{
                //挨着,更新两球重合的最大end值
                points[i][1]=min(points[i][1],points[i-1][1]);
            }
        }
        return result;
    }
};

435. 无重叠区间 - 力扣(LeetCode)

class Solution {
public:
    static bool cmp(vector<int>&a,vector<int>&b){
        return a[0]<b[0];
    }
    int eraseOverlapIntervals(vector<vector<int>>& intervals) {
        if(intervals.size()==0) return 0;
        sort(intervals.begin(),intervals.end(),cmp);
        int result=0;
        int end=intervals[0][1];
        for(int i=1;i<intervals.size();i++){
            if(intervals[i][0] >= end){
                //无重叠
                end=intervals[i][1];
            }
            else{
                //重叠
                end=min(end,intervals[i][1]);
                result++;
            }
        }
        return result;
    }
};

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

class Solution {
public:
    vector<int> partitionLabels(string s) {
    int hash[27]={0};
    for(int i=0;i<s.size();i++){
        hash[s[i]-'a']=i;
    }
    vector<int>result;
    int left=0;
    int right=0;
    for(int i=0;i<s.size();i++){
        right=max(right,hash[s[i]-'a']);
        if(i==right){
            result.push_back(right-left+1);
            left=i+1;
        }
    }
    return result;   
    }
};

 重叠类问题要想到按照 左或右 边界进行排序,然后在遍历过程中不断更新 某边界。

划分字母区间要想到使用哈希表。


http://www.kler.cn/a/594705.html

相关文章:

  • Java 大视界 -- Java 大数据在智能政务舆情引导与公共危机管理中的应用(138)
  • Flask 模版引擎的语法
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(10)
  • Redis 在windows下的下载安装与配置
  • 医院信息系统平台总体架构原则
  • 创造型设计模式
  • canvas数据标注功能简单实现:矩形、圆形
  • <el-form >ref数据监测不到的原因
  • 将MySQL数据同步到Elasticsearch作为全文检索数据的实战指南
  • 【从零开始学习计算机科学与技术】计算机网络(五)网络层
  • RocketMQ 架构
  • ssm_mysql_校园二手交易系统
  • 数据结构:用C语言实现插入排序
  • 设计模式,如单例模式、观察者模式在什么场景下使用
  • 在Oracle Linux 7上安装Oracle 11gr2数据库
  • 【 Kubernetes 风云录 】- Istio 实现流量染色及透传
  • 嵌入式八股,什么是线程安全
  • 大数据学习(76)-Impala计算引擎
  • HashMap添加元素的流程图
  • 大数据 Spark 技术简介