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++;
            }
        }
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章