当前位置:首页 > 编程笔记 > 正文
已解决

leetcode2054

来自网友在路上 176876提问 提问时间:2023-11-07 13:55:40阅读次数: 76

最佳答案 问答题库768位专家为你答疑解惑

leetcode 2054

#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, 遍历所有时间,找出最大值。

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"leetcode2054":http://eshow365.cn/6-34526-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!