สมมติว่าเรามีอาร์เรย์ความยาวคงที่ของจำนวนเต็ม เราต้องทำซ้ำการเกิดขึ้นของศูนย์แต่ละครั้ง โดยเลื่อนองค์ประกอบที่เหลือไปทางด้านขวา
โปรดทราบว่าองค์ประกอบที่เกินความยาวของอาร์เรย์ดั้งเดิมจะไม่ถูกเขียน
สมมติว่าอาร์เรย์เป็นเหมือน [1,0,2,3,0,4,5,0] หลังจากแก้ไขแล้ว จะเป็น [1,0,0,2,3,0,0,4]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- คัดลอก arr ไปยังอาร์เรย์อื่น arr2 ตั้งค่า i และ j เป็น 0
- ในขณะที่ฉัน <ขนาดของ arr −
- ถ้า arr2[i] เป็นศูนย์ แล้ว
- arr[i] :=0
- เพิ่ม i ขึ้น 1
- ถ้าฉัน <ขนาดของ arr แล้ว arr[i] :=0
- else arr[i] :=arr2[j]
- เพิ่ม i และ j ขึ้น 1
- ถ้า arr2[i] เป็นศูนย์ แล้ว
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
class Solution(object): def duplicateZeros(self, arr): arr2 = [i for i in arr] i=0 j = 0 while i < len(arr): if not arr2[j]: arr[i] = 0 i+=1 if i<len(arr): arr[i] = 0 else: arr[i] = arr2[j] j+=1 i+=1 return arr ob1 = Solution() print(ob1.duplicateZeros([1,0,2,3,0,4,5,0]))
อินพุต
[1,0,2,3,0,4,5,0]
ผลลัพธ์
[1,0,0,2,3,0,0,4]