मान लीजिए आप एक अनंत संख्या रेखा पर स्थिति 0 पर खड़े हैं। अब लक्ष्य स्थिति target पर है। प्रत्येक चाल में, आप बाएं या दाएं जा सकते हैं। n-वीं चाल (1 से शुरू होकर) में, आप n कदम चलते हैं। हमें गंतव्य तक पहुँचने के लिए आवश्यक न्यूनतम चरणों की संख्या ज्ञात करनी है। इसलिए यदि इनपुट target = 3 है, तो हमें 2 चरणों की आवश्यकता होगी। 0 से 1, फिर 1 से 3।
हल का दृष्टिकोण
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
target := |target|,cnt := 0while target > 0करते हुए:cntको 1 से बढ़ाएंtarget := target - cnt
- यदि
targetसम है, तोcntलौटाएं, अन्यथाcnt + 1 + cnt % 2लौटाएं
उदाहरण
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int reachNumber(int target) {
target = abs(target);
int cnt = 0;
while(target > 0){
target -= ++cnt;
}
return target % 2 == 0 ? cnt : cnt + 1 + cnt % 2;
}
};
int main(){
Solution ob;
cout << (ob.reachNumber(3));
}
इनपुट
3
आउटपुट
2