मान लीजिए कि हमारे पास संख्याओं की एक सरणी है जिसे अंक कहा जाता है, जहां सभी तत्व अद्वितीय हैं। हमें यह जांचना है कि अंक लगभग क्रमबद्ध हैं या नहीं। जैसा कि हम जानते हैं कि एक सरणी लगभग क्रमबद्ध होती है जब उसका कोई भी तत्व क्रमबद्ध सरणी में अपनी मूल स्थिति से अधिकतम 1 दूरी पर हो सकता है।
इसलिए, यदि इनपुट nums =[10, 30, 20, 40] जैसा है, तो आउटपुट सही होगा क्योंकि 10 को उसके मूल स्थान पर रखा गया है और अन्य सभी तत्व अपनी वास्तविक स्थिति से अधिकतम एक स्थान दूर हैं।पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- मैं :=0
- जबकि मैं <अंकों का आकार -1, करते हैं
- यदि अंक [i]> अंक [i + 1], तो
- अंकों की अदला-बदली करें[i] और अंक[i + 1]
- i :=i + 1
- i :=i + 1
- यदि अंक [i]> अंक [i + 1], तो
- i के लिए 0 से लेकर अंकों के आकार -1 तक के लिए
- यदि अंक [i]> अंक [i + 1], तो
- झूठी वापसी
- यदि अंक [i]> अंक [i + 1], तो
- सही लौटें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(nums): i = 0 while i < len(nums) - 1: if nums[i] > nums[i + 1]: nums[i], nums[i + 1] = nums[i + 1], nums[i] i += 1 i += 1 for i in range(len(nums) - 1): if nums[i] > nums[i + 1]: return False return True nums = [10, 30, 20, 40] print(solve(nums))
इनपुट
[10, 30, 20, 40]
आउटपुट
True