मान लीजिए हमारे पास nums नामक संख्याओं की एक सरणी है, जहां सभी तत्व अद्वितीय हैं। हमें जांचना है कि nums लगभग क्रमबद्ध है या नहीं। जैसा कि हम जानते हैं, एक सरणी लगभग क्रमबद्ध होती है जब उसका कोई भी तत्व क्रमबद्ध सरणी में अपनी मूल स्थिति से अधिकतम 1 दूरी पर हो सकता है।
इसलिए, यदि इनपुट nums = [10, 30, 20, 40] है, तो आउटपुट True होगा क्योंकि 10 अपनी मूल जगह पर रखा गया है और अन्य सभी तत्व अपनी वास्तविक स्थिति से अधिकतम एक स्थान दूर हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- i := 0
- जब i < nums का आकार - 1 हो, तब तक करें
- यदि nums[i] > nums[i + 1], तो
- nums[i] और nums[i + 1] को स्वैप करें
- i := i + 1
- i := i + 1
- यदि nums[i] > nums[i + 1], तो
- i को 0 से nums के आकार - 1 तक की रेंज में, करें
- यदि nums[i] > nums[i + 1], तो
- False लौटाएं
- यदि nums[i] > nums[i + 1], तो
- True लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
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