मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें निम्न मानदंडों को बनाए रखते हुए सरणी को क्रमबद्ध करना है:
- सम संख्याएं आरोही क्रम में क्रमबद्ध हों
- विषम संख्याएं अवरोही क्रम में क्रमबद्ध हों
- सम और विषम संख्याओं की सापेक्ष स्थिति नहीं बदलनी चाहिए।
उदाहरण के लिए, यदि इनपुट [9, 14, 12, 91, -4, 5] है, तो आउटपुट [91, -4, 12, 9, 14, 5] होगा।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- evens := nums सरणी में सम पदों की सूची
- odds := nums सरणी में विषम पदों की सूची
- evens सूची को क्रमबद्ध करें
- odds सूची को अवरोही क्रम में क्रमबद्ध करें
- even_i := 0, odd_i := 0
- index को 0 से nums के आकार तक के लिए करें:
- यदि nums[index] % 2 == 0, तो nums[index] := evens[even_i], even_i := even_i + 1
- अन्यथा, nums[index] := odds[odd_i], odd_i := odd_i + 1
- nums वापस करें
उदाहरण
class Solution:
def solve(self, nums):
evens = [num for num in nums if num % 2 == 0]
odds = [num for num in nums if num % 2 != 0]
evens.sort()
odds.sort(reverse=True)
even_i = 0
odd_i = 0
for index in range(len(nums)):
if nums[index] % 2 == 0:
nums[index] = evens[even_i]
even_i += 1
else:
nums[index] = odds[odd_i]
odd_i += 1
return nums
ob = Solution()
print(ob.solve([9, 14, 12, 91, -4, 5]))
इनपुट
[9, 14, 12, 91, -4, 5]
आउटपुट
[91, -4, 12, 9, 14, 5]