📜  使用Python中的列表理解将所有零移动到数组末尾

📅  最后修改于: 2022-05-13 01:54:44.330000             🧑  作者: Mango

使用Python中的列表理解将所有零移动到数组末尾

给定一个随机数数组,将给定数组的所有零推到数组末尾。例如,如果给定的数组是 {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0},则应将其更改为 {1, 9, 8, 4, 2, 7, 6、0、0、0、0}。所有其他元素的顺序应该相同。预期时间复杂度为 O(n),额外空间为 O(1)。

例子:

Input :  arr = [1, 2, 0, 4, 3, 0, 5, 0]
Output : arr = [1, 2, 4, 3, 5, 0, 0, 0]

Input : arr  = [1, 2, 0, 0, 0, 3, 6]
Output : arr = [1, 2, 3, 6, 0, 0, 0]

我们有针对此问题的现有解决方案,请参阅将所有零移到数组链接的末尾。我们将在单行代码中使用 List Comprehension 在Python中解决这个问题。

# Function to append all zeros at the end 
# of array
def moveZeros(arr):
      
    # first expression returns a list of
    # all non zero elements in arr in the 
    # same order they were inserted into arr
    # second expression returns a list of 
    # zeros present in arr
    return [nonZero for nonZero in arr if nonZero!=0] + \
           [Zero for Zero in arr if Zero==0]
  
# Driver function
if __name__ == "__main__":
    arr = [1, 2, 0, 4, 3, 0, 5, 0]
    print (moveZeros(arr))

输出:

[1, 2, 4, 3, 5, 0, 0, 0]