283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
该题使用双指针就可以轻松求解了,具体代码如下(C++版):
class Solution {
public:
void moveZeroes(vector<int>& nums) {
if(! nums.size()) return;
int left=0;
int right=0;
while(right<nums.size())
{
while(right<nums.size() && left==right && nums[right] != 0)
{
++right;
++left;
}
while(right<nums.size() && nums[right] == 0) ++right;
if(right<nums.size() && left != right)
{
swap(nums[left],nums[right]);
++left;
}
}
}
};
运行效果:
相同的思路Python版:
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
if(len(nums)<2):
return
left=0
right=0
while(right<(len(nums))):
if(nums[right]!=0):
nums[left],nums[right]=nums[right],nums[left]
left+=1
right+=1
else:
right+=1
运行效果:
(果然还是简单题让人身心愉悦啊O(∩_∩)O哈哈~)
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/move-zeroes