283. Move Zeroes
- Total Accepted: 98144
- Total Submissions: 216474
- Difficulty: Easy
Given an array nums
, write a function to move all 0
's to the end of it while maintaining the relative order of the non-zero elements.
For example, given nums = [0, 1, 0, 3, 12]
, after calling your function, nums
should be [1, 3, 12, 0, 0]
.
思路:遇到等于0的数,直接替换或者删除。
代码:
写法一:16 ms
1 class Solution { 2 public: 3 void moveZeroes(vector<int>& nums) { 4 int i,size=nums.size(),begin=0; 5 for(i=0;i<size;i++){ 6 if(nums[i]) nums[begin++]=nums[i]; 7 } 8 for(;begin<size;begin++){ 9 nums[begin]=0; 10 } 11 } 12 };
写法二:20 ms
1 class Solution { 2 public: 3 void moveZeroes(vector<int>& nums) { 4 int i,size=nums.size(),count=0; 5 for(i=0;i<size;i++){ 6 if(nums[i]==0) count++; 7 else{ 8 nums[i-count]=nums[i]; 9 } 10 } 11 i=i-count; 12 for(;i<size;i++){ 13 nums[i]=0; 14 } 15 } 16 };
写法三:28 ms
1 class Solution { 2 public: 3 void moveZeroes(vector<int>& nums) { 4 int i,size=nums.size(); 5 for(i=0;i<nums.size();){ 6 if(nums[i]==0) nums.erase(nums.begin()+i); 7 else{ 8 i++; 9 } 10 } 11 for(;i<size;i++){ 12 nums.push_back(0); 13 } 14 } 15 };