ในบทความนี้ เราจะมาเรียนรู้วิธีหาจำนวนที่มากที่สุดที่เป็นไปได้จากรายการตัวเลขที่ระบุ เราจะเห็นวิธีการที่แตกต่างกันสองวิธีในการค้นหาเพื่อแก้ปัญหา ทำตามขั้นตอนด้านล่างเพื่อแก้ปัญหา
- นำเข้าโมดูล itertools สำหรับวิธีการเรียงสับเปลี่ยน
- เริ่มต้นรายการด้วยตัวเลขและรายการว่าง
- วนซ้ำการเปลี่ยนแปลงของรายการ
- รวมชุดค่าผสมทั้งหมดและเพิ่มผลลัพธ์ลงในรายการว่าง
- ค้นหาจำนวนสูงสุดจากผลลัพธ์ด้วยวิธี max และคีย์เป็น int
- แปลงสตริงเป็นจำนวนเต็มแล้วพิมพ์
ตัวอย่าง
มาดูโค้ดกันเลย
# importing the module import itertools # initializing the list numbers = [45, 35, 138, 43, 67] # result result = [] # permutations for permutation in itertools.permutations(str(number) for number in numbers): result.append(''.join(permutation)) # finding max maximum = max(result, key=int) # printing the max print(int(maximum))
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
ผลลัพธ์
67454335138
เรามาดูวิธีแก้ปัญหาอื่นกัน เราจะจัดเรียงฟังก์ชันเพื่อแก้ปัญหา ทำตามขั้นตอนด้านล่างเพื่อเขียนโค้ด
- ส่งรายการไปยังฟังก์ชันที่จัดเรียง
- เขียนฟังก์ชันที่เรียกว่า get_key ซึ่งยอมรับสองอาร์กิวเมนต์
- คืนค่า -1 ถ้า str(ก่อน) + str(วินาที)> str(วินาที) + str(ก่อน) อื่น 1.
- การเข้าร่วมรายการองค์ประกอบโดยใช้วิธีการเข้าร่วม
- พิมพ์ผลลัพธ์โดยแปลงเป็นจำนวนเต็ม
เนื่องจากเราใช้ฟังก์ชันเป็นคีย์ เราจึงต้องแปลงเป็นคีย์โดยใช้วิธี cmp_to_key จาก functools มาดูโค้ดกันเลย
ตัวอย่าง
from functools import cmp_to_key # initializing the list numbers = [45, 35, 138, 43, 67] def get_key(first, second): if str(first) + str(second) > str(second) + str(first): return -1 return 1 # getting the result result = sorted(numbers, key=cmp_to_key(get_key)) # joining the result result = "".join(str(integer) for integer in result) # printing the result print(int(result))
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
ผลลัพธ์
67454335138
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น