मान लीजिए कि आप एक अनंत संख्या रेखा पर स्थिति 0 पर खड़े हैं। अब स्थिति लक्ष्य पर एक लक्ष्य है। यहां प्रत्येक चाल में, आप या तो बाईं ओर या दाईं ओर जा सकते हैं। n-वें चाल के दौरान (1 से शुरू करते हुए), आप n कदम उठाते हैं। हमें गंतव्य तक पहुँचने के लिए आवश्यक न्यूनतम चरणों की संख्या ज्ञात करनी होगी। तो अगर इनपुट लक्ष्य =3 की तरह है, तो हमें 2 चरणों की आवश्यकता है। 0 से 1 तक, 1 से 3 तक।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- लक्ष्य :=|target|, cnt :=0
- लक्ष्य के दौरान> 0,
- cnt को 1 से घटाएं
- लक्ष्य :=लक्ष्य –cnt
- यदि लक्ष्य सम है, तो वापस cnt, अन्यथा cnt + 1 + cnt mod 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;
}
};
main(){
Solution ob;
cout << (ob.reachNumber(3));
} इनपुट
3
आउटपुट
2