मान लीजिए कि आप एक अनंत संख्या रेखा पर स्थिति 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