作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2ba4i/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
题目
题目:移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0]
说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。
C++源程序:
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int zuozhizhen = 0;
for(int youzhizhen = 0; youzhizhen < nums.size(); youzhizhen++){
if(nums[youzhizhen] != 0){
nums[zuozhizhen++] = nums[youzhizhen];
}
}
for(int i = zuozhizhen; i < nums.size(); i++){
nums[i] = 0;
}
}
};
个人心得:
- 本题的思路在于数组算法中的基础思路——双指针。
- 双指针其实使用起来并没有想象的那么复杂,双指针核心就是两个指针,同时移动,一个移动的快一个移动的慢,这样用移动快的(不停向右移动的指针)指针来进行判断,如果符合条件,则赋值给移动慢的指针,进行存储构建新的值的数组。
- 其他
涉及知识:
- 双指针
核心就是定义下标,然后一个一直快速的移动(不停地右移动)进行判断,一个慢的进行赋值操作。
|