leetcode-283. 移動零刷題筆記(c++)

寫在前面

  • 有些題目不刷,一時還真想不通一些方法
  • 儘管簡單
  • 還有1中可能是太菜,,,

題目詳情

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

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

說明:
	必須在原數組上操作,不能拷貝額外的數組。
	儘量減少操作次數。

ac代碼

  • 解題思路
    • 遍歷1次數組,將數組中非零元素與數組中第1個零元素交換位置。
class Solution
{
public:
    void moveZeroes(vector<int>& nums)
    {
        int k = 0;
        for(int i = 0; i < nums.size(); i++)
        {
            if(nums[i] != 0)
            {
                if(k != i)    // 下標等值無需交換
                    swap(nums[i],nums[k]);
                k++;
            }
        }
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章