已解决
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%的人还看了
相似问题
- pandas定位选取某列某指标最大值所在的行记录,比如月底
- java中基本数据类型的最大值最小值理解
- LeetCode Hot100之十:239.滑动窗口最大值
- 239.滑动窗口的最大值
- 【踩坑及思考】浏览器存储 cookie 最大值超过 4kb,或 http 头 cookie 超过限制值
- 寻找二维数组的最大值和对应下标 | C语言代码
- 【蓝桥杯选拔赛真题08】C++最大值最小值平均值 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析
- python:逐像素处理遥感数据时间序列数据(求时间序列最大值、最大值所对应的索引、最大值所在的时间)
- 面试算法44:二叉树中每层的最大值
- 【Python 千题 —— 基础篇】列表最大值
猜你感兴趣
版权申明
本文"leetcode2054":http://eshow365.cn/6-34526-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!