网站开发的公司名称,中国制造网注册网站免费注册,做网站最简单的方法,昆明cms模板建站题目链接
力扣网 1089 复写零
题目描述
给你一个长度固定的整数数组 arr #xff0c;请你将该数组中出现的每个零都复写一遍#xff0c;并将其余的元素向右平移。
注意#xff1a;请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改#xff0c;不…题目链接
力扣网 1089 复写零
题目描述
给你一个长度固定的整数数组 arr 请你将该数组中出现的每个零都复写一遍并将其余的元素向右平移。
注意请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改不要从函数返回任何东西。 示例 1
输入arr [1,0,2,3,0,4,5,0]
输出[1,0,0,2,3,0,0,4]
解释调用函数后输入的数组将被修改为[1,0,0,2,3,0,0,4]
示例 2
输入arr [1,2,3]
输出[1,2,3]
解释调用函数后输入的数组将被修改为[1,2,3]提示
1 arr.length 1040 arr[i] 9 思路分析
知识点双指针
解析
思路1
按照题目要求直接实现定义两个指针cur和dest两个指针从零开始cur用来扫描整个数组。
1.当arr【cur】等于0时将dest指针移动到cur位置然后cur加一从cur位置开始到整个数组结束元素整体向右移动最后在cur位置加个0即可。
2.当arr【cur】不等于0时cur往下走dest不动。
void duplicateZeros(int* arr, int arrSize) {int cur0;int dest0;while(curarrSize){if(arr[cur]0){int endarrSize-1;destcur;while(enddest){arr[end]arr[end-1];end--;}arr[cur]0;}cur;}}