495. Teemo Attacking
来源:互联网 发布:淘宝考试题目答案 编辑:程序博客网 时间:2024/05/18 22:18
整体不是很难。
一开始超时了,主要是由于要不停维护state这张表格,耗费时间。因此修改为区间处理。
class Solution {public: int findPoisonedDuration(vector<int>& timeSeries, int duration) { if(timeSeries.size()==0) return 0; else { vector<int> state(timeSeries[timeSeries.size()-1]+duration,0); int poisonedTime=0; for(int i=0;i<timeSeries.size();i++) { for(int j=timeSeries[i];j<timeSeries[i]+duration;j++) { if(state[j]==0) { poisonedTime++; state[j]=1; } } cout<<poisonedTime<<endl; } return poisonedTime; } }};
正确代码:
采用区间的greedy策略,将每一个小区间按照pair的第一维排序,然后建立一个queue维护,计算区间之间1的个数,得到最后的结果。
queue处理时要细心。
class Solution {public: static bool cmp( pair<int,int>& a, pair<int,int>& b) { if(a.first<b.first) return true; else return false; } int findPoisonedDuration(vector<int>& timeSeries, int duration) { if(timeSeries.size()==0) return 0; else { vector<pair<int, int>> range; for(int i=0;i<timeSeries.size();i++) { pair<int, int> temp(timeSeries[i],timeSeries[i]+duration-1); range.push_back(temp); } sort(range.begin(),range.end(),cmp); //process range /*for(int i=0;i<range.size();i++) cout<<range[i].first<< " "<<range[i].second<<endl; */ int poisonedTime=0; queue<pair<int,int>> findRange; for(int i=0;i<range.size();i++) { if(!findRange.empty()) { if(findRange.back().second>=range[i].first) { pair<int,int> newPair(findRange.back().first,range[i].second); findRange.push(newPair); findRange.pop(); } else { poisonedTime+=findRange.front().second-findRange.front().first+1; findRange.push(range[i]); findRange.pop(); } } else findRange.push(range[i]); //cout<<findRange.size()<<endl; /*for(int i=0;i<findRange.size();i++) cout<<findRange.back().first<< " "<<findRange.back().second<<endl;*/ } if(!findRange.empty()) poisonedTime+=findRange.front().second-findRange.front().first+1; return poisonedTime; } }};
0 0
- 495. Teemo Attacking
- LeetCode 495. Teemo Attacking
- LeetCode 495. Teemo Attacking
- 495. Teemo Attacking
- 495. Teemo Attacking
- 495. Teemo Attacking
- LeetCode:495. Teemo Attacking
- 【Leetcode】495. Teemo Attacking
- 495. Teemo Attacking
- [Array]495. Teemo Attacking
- 495. Teemo Attacking
- [leetcode] 495. Teemo Attacking
- 495. Teemo Attacking
- 495. Teemo Attacking
- leetcode 495. Teemo Attacking
- 【LeetCode】495. Teemo Attacking
- LeetCode 495. Teemo Attacking
- 495. Teemo Attacking
- redis.properties文件的配置及说明
- shortWeekdaySymbols,NSLocale,NSDateComponents
- hello world 的简单输入输出
- 在Java中连接字符串时是使用+号还是使用StringBuilder
- 旧的 DxgkDdiSubmitBuffer / DxgkDdiRender 函数已被弃用)。这个函数相当复杂,并且还接受来自用户模式驱动程序提交的每一个由厂商特定的数据。我在这里找到了一个bug。
- 495. Teemo Attacking
- jQuery.extend 函数使用详解
- BZOJ3261 最大异或和
- 正割函数(sec)
- eclipse远程调试tomcat部署的程序
- DateUtils和DateFormatUtils应用
- 了解Nginx配置文件结构与配置上下文
- 实现Game窗口的Stats界面
- 56. Merge Intervals\113. Path Sum II\211. Add and Search Word