1.题目思路双指针分析指针1遍历数组从数组最开头遍历到结尾目的是找出非0元素指针2开始指向数组最开头元素每当指针1找到一个非0元素就把这个元素安排到指针2对应位置上同时指针2指向数组下一个位置。指针2目的给数组换血让数组非0元素放到前面。用count记录指针2位置其实也可以表示数组中非0元素个数当指针1遍历到数组末尾相当于非0元素找完了此时用数组元素个数减去非0元素个数就是0元素个数那么有几个0就在换血后的数组从后往前补几个就好代码class Solution { public: void moveZeroes(vectorint nums) { int count0; for(int i0;inums.size();i){ if(nums[i]!0){ nums[count]nums[i]; count; } } for(int icount;inums.size();i){ nums[i]0; } } };