LeetCode第283题解析

    技术2022-07-27  78

    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

    示例:

    输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明:

    必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。

    class Solution { public: void moveZeroes(vector<int>& nums) { int j = 0; //慢指针,指向非零元素移动的位置 //快指针,寻找非零元素 for (int i = 0; i < nums.size(); i++) { if (nums[i] != 0) { nums[j] = nums[i]; if (i != j) { nums[i] = 0; } j++; } } } }; class Solution { public: void moveZeroes(vector<int>& nums) { //将非零元素前移 int j = 0; for (int i = 0; i < nums.size(); i++) { if (nums[i] != 0) { nums[j++] = nums[i]; } } //将后面的元素都变为零 for (; j < nums.size(); j++) { nums[j] = 0; } } }; class Solution { public: void moveZeroes(vector<int>& nums) { int j = 0; for (int i = 0; i < nums.size(); i++) { if (nums[i] != 0) { swap(nums[j], nums[i]); j++; } } } };

     

    Processed: 0.008, SQL: 9