मान लीजिए LOL दुनिया में, टीमो नाम का एक हीरो है और उसका हमला उसके दुश्मन ऐश को जहर की स्थिति में डाल सकता है। अब, मान लीजिए हमें ऐश की ओर टीमो के हमले का आरोही समय श्रृंखला और टीमो के हमले प्रति जहर की समय अवधि दी गई है, हमें कुल समय ढूंढना है कि ऐश जहर की स्थिति में है। हम मान सकते हैं कि टीमो एक विशिष्ट समय बिंदु की शुरुआत में हमला करता है, और ऐश को तुरंत जहर की स्थिति में डाल देता है।
इनपुट [1,4] और 2 है, तो आउटपुट 4 होगा। ऐसा इसलिए है क्योंकि समय बिंदु 1 पर, टीमो ऐश पर हमला करना शुरू करता है और ऐश को तुरंत जहर देता है। यहां यह जहर की स्थिति समय बिंदु 2 के अंत तक 2 सेकंड तक रहेगी। और समय बिंदु 4 पर, टीमो इस दुश्मन पर फिर से हमला करता है, और ऐश को और 2 सेकंड के लिए जहर की स्थिति में डाल देता है। इसलिए आपको अंततः 4 आउटपुट करना होगा।
हल का दृष्टिकोण
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
ret := 0सेट करेंcurrEnd := -1n := t का आकारi = 0 से n-1तक:start := t[i], end := t[i] + d - 1- यदि
currEnd < start, तोret := ret + end - start + 1, currEnd = end, - अन्यथा
ret := ret + end - currEnd, currEnd := end
retलौटाएं
उदाहरण
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int findPoisonedDuration(vector<int>& t, int d) {
int ret = 0;
int currEnd = -1;
int n = t.size();
for(int i = 0; i < n; i++){
int start = t[i];
int end = t[i] + d - 1;
if(currEnd < start){
ret += end - start + 1;
currEnd = end;
} else {
ret += end - currEnd;
currEnd = end;
}
}
return ret;
}
};
int main(){
vector<int> v = {1,4};
Solution ob;
cout << (ob.findPoisonedDuration(v, 2));
}
इनपुट
[1,4] 4
आउटपुट
4