สมมติว่าเรามีจำนวนเต็มที่ไม่ติดลบ เราสามารถสลับสองหลักได้มากที่สุดครั้งเดียวเพื่อให้ได้จำนวนที่มีมูลค่าสูงสุด เราต้องคืนค่าตัวเลขมูลค่าสูงสุดที่เราจะได้รับ ดังนั้นหากอินพุตเท่ากับ 2736 เอาต์พุตจะเป็น 7236 ดังนั้นเราจะสลับ 2 กับ 7
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- num :=ตัดแต่ละหลักออกจากตัวเลข แล้วสร้างรายการ
- num1 :=เรียงลำดับตัวเลขย้อนกลับ
- ดัชนี :=0
- ในขณะที่ดัชนี <ความยาวของ num
- ถ้า num1[index] ไม่เหมือนกับ num[index]
- a :=subarray ของ num จากดัชนี (index + 1) ถึงจุดสิ้นสุด
- ย้อนกลับ
- a :=ความยาวของ a – ดัชนีของ num[index] ของ a + ดัชนี + 1 – 1
- num[index], num[a] :=num[a], num[index]
- หมดห่วง
- เพิ่มดัชนีขึ้น 1
- ถ้า num1[index] ไม่เหมือนกับ num[index]
- รวมตัวเลขที่เป็น num แล้วทำให้เป็นจำนวนเต็ม
- ส่งคืนผลลัพธ์
ตัวอย่าง(Python)
ให้เราดูการใช้งานต่อไปนี้เพื่อทำความเข้าใจ −
class Solution: def maximumSwap(self, num): num = list(map(int,list(str(num)))) num1 = sorted(num,reverse=True) index=0 while index<len(num): if num1[index]!=num[index]: a = num[index+1:] a.reverse() a=len(a) - a.index(num1[index])+index+1 -1 num[index],num[a] = num[a],num[index] break index+=1 return int("".join(str(x) for x in num)) ob1 = Solution() print(ob1.maximumSwap(5397))
อินพุต
5397
ผลลัพธ์
9357