मान लीजिए हमें एक सरणी दी गई है जिसमें पूर्णांक तत्व हैं। हमें यह पता लगाना है कि क्या सरणी में मानों को गैर-घटते क्रम में क्रमबद्ध किया जा सकता है यदि हम केवल एक स्वैप ऑपरेशन कर सकते हैं। यदि संभव है, तो हम कहते हैं "Can be done", अन्यथा नहीं।
उदाहरण के लिए, यदि input_list = [7, 8, 12, 10, 11, 9] है, तो आउटपुट "Can be done" होगा।
हल करने का तरीका
- temp_list := input_list की एक प्रति
- temp_list को सॉर्ट करें
- swap_count := 0
- प्रत्येक इंडेक्स के लिए: यदि input_list[i] ≠ temp_list[i], तो swap_count बढ़ाएं
- यदि swap_count 0 या 2 है, तो True लौटाएं ("Can be done")
- अन्यथा False लौटाएं ("Can't be done")
एक स्वैप से अधिकतम दो स्थान गलत हो सकते हैं, इसलिए swap_count 2 होना चाहिए (या 0 यदि पहले से क्रमबद्ध)।
उदाहरण
from copy import deepcopy
def solve(input_list):
temp_list = deepcopy(input_list)
temp_list.sort()
swap_count = 0
for i in range(len(input_list)):
if input_list[i] != temp_list[i]:
swap_count += 1
if swap_count == 0 or swap_count == 2:
print("Can be done")
else:
print("Can't be done")
input_list = [7, 8, 12, 10, 11, 9]
solve(input_list)
इनपुट
[7, 8, 12, 10, 11, 9]
आउटपुट
Can be done