现在网站还用asp做,黑马程序员培训机构,做游戏网站的目地,公司产品网站应该怎么做原题链接#xff1a;. - 力扣#xff08;LeetCode#xff09;
目录
1. 题目描述
2. 思路分析
3. 代码实现 1. 题目描述
给你一个长度固定的整数数组 arr #xff0c;请你将该数组中出现的每个零都复写一遍#xff0c;并将其余的元素向右平移。
注意#xff1a;请不…原题链接. - 力扣LeetCode
目录
1. 题目描述
2. 思路分析
3. 代码实现 1. 题目描述
给你一个长度固定的整数数组 arr 请你将该数组中出现的每个零都复写一遍并将其余的元素向右平移。
注意请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改不要从函数返回任何东西。
2. 思路分析
双指针。
先根据“异地”操作优化成双指针下的“就地”操作。
1. 先找到最后一个复写的数也使用双指针算法
1先判断cur位置的值
2决定dest向后移动一步或者两步
3判断一下dest是否已经到结束位置
4cur
2. 处理一下边界情况 n-1 — 0 cur-- dest - 2
3.“从后向前”完成复写操作
3. 代码实现
class Solution {
public:void duplicateZeros(vectorint arr) {int cur0,dest-1,narr.size();while(curn){if(arr[cur]) dest;else dest2;if(destn-1) break;cur;}if(destn){arr[n-1]0;cur--,dest-2;}while(cur0){if(arr[cur]) arr[dest--]arr[cur--];else{arr[dest--]0;arr[dest--]0;cur--;}}}
};