สมมติว่าเรามีค่า n เราต้องหาจำนวนกลับหัวของความยาว n ขณะที่เราผูกปม ตัวเลขกลับหัวจะเป็นตัวเลขที่เหมือนกันเมื่อพลิก 180 องศา
ดังนั้น หากอินพุตเป็น n =2 เอาต์พุตจะเป็น ['11', '69', '88', '96']
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนดฟังก์ชัน middle() นี่จะใช้เวลา x
-
ถ้า x เป็น 0 แล้ว
-
กลับรายการสตริงว่าง
-
-
ถ้า x เท่ากับ 1 แล้ว
-
กลับรายการองค์ประกอบใหม่ 0, 1, 8
-
-
ret :=รายการใหม่
-
กลาง :=กลาง (x − 2)
-
สำหรับแต่ละเมตรในช่วงกลางทำ
-
ถ้า x ไม่เหมือนกับ n แล้ว
-
แทรก ("0" concatenate m concatenate "0") ที่ส่วนท้ายของ ret
-
-
แทรก ("1" concatenate m concatenate "1") ที่ส่วนท้ายของ ret
-
แทรก ("6" concatenate m concatenate "9") ที่ส่วนท้ายของ ret
-
แทรก ("8" concatenate m concatenate "8") ที่ส่วนท้ายของ ret
-
แทรก ("9" concatenate m concatenate "6") ที่ส่วนท้ายของ ret
-
-
รีเทิร์น
-
จากวิธีหลัก ให้ทำดังนี้ −
-
ถ้า n เป็น 0 แล้ว
-
กลับรายการใหม่
-
-
มิฉะนั้นจะส่งคืนรายการที่เรียงลำดับของ Middle(n)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, n): if not n: return [] def middle(x=n): if not x: return [""] if x == 1: return list("018") ret = [] mid = middle(x - 2) for m in mid: if x != n: ret.append("0" + m + "0") ret.append("1" + m + "1") ret.append("6" + m + "9") ret.append("8" + m + "8") ret.append("9" + m + "6") return ret return sorted(middle()) ob = Solution() print(ob.solve(2))
อินพุต
2
ผลลัพธ์
['11', '69', '88', '96']