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
博客围绕 LeetCode 283. 移动零问题展开,该问题要求将数组中所有 0 移动到末尾,同时保持非零元素相对顺序。使用双指针方法可轻松求解,还给出了 C++ 和 Python 两种语言的具体代码。

1788

被折叠的 条评论
为什么被折叠?



