สมมติว่าเรามีรายการตัวเลข nums เราต้องวางศูนย์ทั้งหมดไปที่ท้ายรายการโดยอัปเดตรายการแบบ in-place และลำดับสัมพัทธ์ขององค์ประกอบอื่นๆ ไม่ควรเปลี่ยนแปลง ควรพยายามแก้ในพื้นที่เพิ่มเติม 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
- ถ้า
- ลูป
jจากkถึงขนาดของL:L[j]:= 0
- คืนค่า
L
การใช้งาน
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]