1. 程式人生 > >LeetCode演算法題283:移動零解析

LeetCode演算法題283:移動零解析

給定一個數組 nums,編寫一個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。
示例:

輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]

說明:

  1. 必須在原陣列上操作,不能拷貝額外的陣列。
  2. 儘量減少操作次數。

這個題也沒有其它的好辦法,只能將0與非零值位置互換直到最後。

C++原始碼:

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int n = nums.size();
        for(
int i=0;i<n-1;i++) { if (nums[i]==0) { for (int j=i+1;j<n;j++) { if (nums[j]!=0) { nums[i] = nums[j]; nums[j] = 0; break; }
} } } } };

python3原始碼:

class Solution:
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        for i in range(len(nums)-1):
            if
nums[i]==0: for j in range(i+1,len(nums)): if nums[j]: nums[i], nums[j] = nums[j], nums[i] break