283 Move Zeroes 移动零
给定一个数组 nums, 编写一个函数将所有 0 移动到它的末尾,同时保持非零元素的相对顺序。
例如, 定义 nums = [0, 1, 0, 3, 12],调用函数之后, nums 应为 [1, 3, 12, 0, 0]。
注意事项:
必须在原数组上操作,不要为一个新数组分配额外空间。
尽量减少操作总数。
详见:https://leetcode.com/problems/move-zeroes/description/
Java实现:
class Solution { public void moveZeroes(int[] nums) { for(int i=0,j=0;i<nums.length;++i){ if(nums[i]!=0){ swap(nums,i,j++); } } } private void swap(int[] nums,int i,int j){ int tmp=nums[i]; nums[i]=nums[j]; nums[j]=tmp; } }
C++实现:
class Solution { public: void moveZeroes(vector<int>& nums) { for(int i=0,j=0;i<nums.size();++i) { if(nums[i]) { swap(nums[i],nums[j++]); } } } };
参考:https://www.cnblogs.com/grandyang/p/4822732.html