leetcode2054

leetcode 2054

cpp 复制代码
#include <iostream>
#include <vector>
#include <tuple>
#include <algorithm>


using namespace std;

struct Event {
    // 时间戳
    int ts;
    // op = 0 表示左边界,op = 1 表示右边界
    int op;
    int val;
    Event(int _ts, int _op, int _val): ts(_ts), op(_op), val(_val) {}
    bool operator< (const Event& that) const {
        return tie(ts, op) < tie(that.ts, that.op);
    }
};

class Solution {
public:
    int maxTwoEvents(vector<vector<int> >& events) {
        vector<Event> evs;
        for (const auto& event : events) {
            evs.emplace_back(event[0], 0, event[2]);
            evs.emplace_back(event[1], 1, event[2]);
        }
        sort(evs.begin(), evs.end());

        for (const auto& row : evs) {
            
            std::cout << row.ts << ","<< row.op << ","<< row.val << " ";
            
            std::cout << std::endl;
        }
        
        
        int ans = 0, bestFirst = 0;
        for(int i=0; i<evs.size(); i++){
            int cur_ts = evs[i].ts;
            int cur_op = evs[i].op;
            int cur_val = evs[i].val;

            if (cur_op == 0) {
                ans = max(ans, cur_val + bestFirst);
            }
            else {
                bestFirst = max(bestFirst, cur_val);
            };

        }

        return ans;
    }
};

int main(){
    vector<vector<int> > events = {{1,3,2},{4,5,2},{2,4,3}};

    // for (const auto& row : events) {
    //     for (const auto& element : row) {
    //         std::cout << element << " ";
    //     }
    //     std::cout << std::endl;
    // }
    Solution s;
    int ans = s.maxTwoEvents(events);
    
    return 0;
}

(ith start_time, ith end_time, ith val) 需要找到前i-1 end_time 的最大值,加上ith val, 遍历所有时间,找出最大值。

相关推荐
CHANG_THE_WORLD11 分钟前
并发编程指南 同步操作与强制排序
开发语言·c++·算法
gaoshou451 小时前
代码随想录训练营第三十一天|LeetCode56.合并区间、LeetCode738.单调递增的数字
数据结构·算法
自信的小螺丝钉1 小时前
Leetcode 240. 搜索二维矩阵 II 矩阵 / 二分
算法·leetcode·矩阵
KING BOB!!!3 小时前
Leetcode高频 SQL 50 题(基础版)题目记录
sql·mysql·算法·leetcode
我是渣哥3 小时前
Java String vs StringBuilder vs StringBuffer:一个性能优化的探险故事
java·开发语言·jvm·后端·算法·职场和发展·性能优化
THMAIL3 小时前
机器学习从入门到精通 - 机器学习调参终极手册:网格搜索、贝叶斯优化实战
人工智能·python·算法·机器学习·支持向量机·数据挖掘·逻辑回归
lytk993 小时前
矩阵中寻找好子矩阵
线性代数·算法·矩阵
珊瑚怪人4 小时前
算法随笔(一)
算法
晚安里4 小时前
JVM相关 4|JVM调优与常见参数(如 -Xms、-Xmx、-XX:+PrintGCDetails) 的必会知识点汇总
java·开发语言·jvm·后端·算法
THMAIL5 小时前
机器学习从入门到精通 - 集成学习核武器:随机森林与XGBoost工业级应用
人工智能·python·算法·随机森林·机器学习·集成学习·sklearn