ধরুন আমাদের কাছে nums নামক সংখ্যার একটি তালিকা আছে, আমাদের নিম্নলিখিত মানদণ্ড বজায় রেখে অ্যারে সাজাতে হবে
- জোড় সংখ্যা ক্রমবর্ধমান ক্রমে সাজানো হয়
- বিজোড় সংখ্যাগুলিকে নিচের ক্রমে সাজানো হয়
- জোড় এবং বিজোড় সংখ্যার আপেক্ষিক অবস্থান পরিবর্তন করা উচিত নয়।
সুতরাং, যদি ইনপুটটি [9, 14, 12, 91, -4, 5] এর মত হয়, তাহলে আউটপুট হবে [91, -4, 12, 9, 14, 5]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- evens :=সংখ্যা অ্যারেতে জোড় পদের তালিকা
- অডস :=সংখ্যা অ্যারেতে বিজোড় পদের তালিকা
- তালিকা সমান বাছাই করুন
- even_i :=0, odd_i :=0
- পরিসীমা 0 থেকে সংখ্যার আকারের জন্য, করুন
- যদি nums[index] mod 2 0 এর মত হয়, তাহলে
- সংখ্যা[সূচী] :=সমতা[even_i]
- even_i :=even_i + 1
- অন্যথায়,
- সংখ্যা[সূচী] :=মতভেদ[বিজোড়_i]
- odd_i :=odd_i + 1
- যদি nums[index] mod 2 0 এর মত হয়, তাহলে
- রিটার্ন সংখ্যা
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
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]