สมมติว่าเรามีอาร์เรย์ที่จะเก็บตัวเลขไว้ มีค่าที่ไม่ใช่ศูนย์เช่นเดียวกับค่าศูนย์ ดังนั้นเราต้องส่งศูนย์ทั้งหมดไปทางขวาโดยไม่เปลี่ยนลำดับสัมพัทธ์ของตัวเลขอื่น ดังนั้นหากอาร์เรย์เป็นแบบ [0, 1, 5, 0, 3, 8, 0, 0, 9] ดังนั้นอาร์เรย์สุดท้ายจะเป็น [1, 5, 3, 8, 9, 0, 0, 0, 0 ]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- สมมติว่าดัชนี =0
- for i =0 ถึงความยาวของ A
- ถ้า A[i] !=0 แล้ว
- A[ดัชนี] :=A[i]
- ดัชนี :=ดัชนี + 1
- ถ้า A[i] !=0 แล้ว
- for i =ดัชนีความยาว A
- A[i] =0
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
class Solution(object): def moveZeroes(self, nums): """ :type nums: List[int] :rtype: None Do not return anything, modify nums in-place instead. """ insert_index = 0 for i in range(len(nums)): if nums[i] != 0: nums[insert_index]=nums[i] insert_index+=1 for i in range(insert_index,len(nums)): nums[i]=0 nums = [0,1,5,0,3,8,0,0,9] ob1 = Solution() ob1.moveZeroes(nums) print(nums)
อินพุต
nums = [0,1,5,0,3,8,0,0,9]
ผลลัพธ์
[1,5,3,8,9,0,0,0,0]