สมมติว่าเรามีรายการตัวเลข เราต้องใส่เลขศูนย์ทั้งหมดไว้ที่ท้ายรายการโดยปรับปรุงรายการให้เข้าที่ และไม่ควรเปลี่ยนการเรียงลำดับแบบสัมพันธ์ขององค์ประกอบอื่น ๆ เราต้องพยายามแก้ปัญหานี้ใน O(1) พื้นที่เพิ่มเติม
ดังนั้น หากอินพุตเป็น [2,0,1,4,0,5,6,4,0,1,7] ผลลัพธ์จะเป็น [2, 1, 4, 5, 6, 4, 1 , 7, 0, 0, 0]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ถ้าขนาด L เท่ากับ 0 แล้ว
- คืนรายการว่าง
- k :=0
- สำหรับ i ในช่วง 0 ถึงขนาด L ให้ทำ
- ถ้า L[i] ไม่เหมือนกับ 0 แล้ว
- L[k] :=L[i]
- k :=k + 1
- ถ้า L[i] ไม่เหมือนกับ 0 แล้ว
- สำหรับ j ในช่วง k ถึงขนาด L ให้ทำ
- L[j] :=0
- คืนแอล
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, L): if len(L) == 0: return [] k = 0 for i in range(len(L)): if L[i] != 0: L[k] = L[i] k+=1 for j in range(k,len(L)): L[j] = 0 return L ob = Solution() L = [2,0,1,4,0,5,6,4,0,1,7] print(ob.solve(L))
อินพุต
[2,0,1,4,0,5,6,4,0,1,7]
ผลลัพธ์
[2, 1, 4, 5, 6, 4, 1, 7, 0, 0, 0]