मान लीजिए हमारे पास nums नामक एक अनियंत्रित सरणी है और सभी तत्व 0 से n-1 की रेंज में हैं। हम nums में आसन्न तत्वों को जितनी बार चाहें स्वैप कर सकते हैं लेकिन केवल तभी जब इन तत्वों के बीच निरपेक्ष अंतर 1 हो। हमें यह जांचना है कि क्या हम nums को सॉर्ट कर सकते हैं या नहीं।
तो, यदि इनपुट nums = [1, 0, 3, 2, 5, 4] है, तो आउटपुट True होगा क्योंकि हम इन जोड़ियों [(1, 0), (3, 2), (5, 4)] को स्वैप करके [0, 1, 2, 3, 4, 5] सॉर्ट कर सकते हैं।
हल करने के चरण
- रेंज 0 से nums के आकार - 2 तक के लिए i, करें:
- यदि nums[i] > nums[i+1], तो:
- यदि nums[i] - nums[i+1], 1 के समान है, तो:
- nums[i] और nums[i+1] का आदान-प्रदान करें
- अन्यथा,
- False लौटाएं
- यदि nums[i] - nums[i+1], 1 के समान है, तो:
- यदि nums[i] > nums[i+1], तो:
- True लौटाएं
उदाहरण
def solve(nums):
for i in range(len(nums) - 1):
if nums[i] > nums[i+1]:
if nums[i] - nums[i+1] == 1:
nums[i], nums[i+1] = nums[i+1], nums[i]
else:
return False
return True
nums = [1, 0, 3, 2, 5, 4]
print(solve(nums))
इनपुट
[1, 0, 3, 2, 5, 4]
आउटपुट
True