題目:
雙指針想法:
i 指針在數組不為 0 的地方停留,j 指針在每個地方停留,依次交換 i 和 j 指針。當 i 指針遍歷完所有數組元素時,j 指針指向的元素及后面的元素都為0。
代碼如下:
C++版本
class Solution {
public:void moveZeroes(vector<int>& nums) {int i=0;int len=nums.size();for(int j=0;j<len;j++){while(i<len && nums[i]==0){i++;}if(i==len){for(int k=j;k<len;k++){nums[k]=0;}break;}swap(nums[i++],nums[j]);}}
};
python版本:
class Solution:def moveZeroes(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""i=0len_nums=len(nums)for j in range(len_nums):while i<len_nums and nums[i]==0:i+=1if i==len_nums:for k in range(j,len_nums):nums[k]=0breaknums[i],nums[j]=nums[j],nums[i]i+=1