Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมจัดเรียงเลขคู่และเลขคี่เป็นลำดับเพิ่มและลดตามลำดับใน Python

สมมติว่ามีรายการตัวเลขชื่อ 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
  • for index ในช่วง 0 ถึงขนาดของ nums
    • ถ้า nums[index] mod 2 == 0 nums[index] := evens[even_i], even_i += 1
    • มิฉะนั้น nums[index] := odds[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]