建立一个公司网站大约多少钱,安卓app十大开发框架,山东网站推广营销设计,网站开发企业公司题目链接
力扣#xff08;LeetCode#xff09;官网 - 全球极客挚爱的技术成长平台 题目解析
将数组中出现的每个零复写一遍#xff0c;然后将其他元素向右平移#xff0c;数组长度不能改变。
法一#xff1a;使用额外空间的做法 class Solution
{
public:void duplica…题目链接
力扣LeetCode官网 - 全球极客挚爱的技术成长平台 题目解析
将数组中出现的每个零复写一遍然后将其他元素向右平移数组长度不能改变。
法一使用额外空间的做法 class Solution
{
public:void duplicateZeros(vectorint arr) {// 定义一个额外的vectorvectorint v;// 遍历数组for(autoe:arr){// 如果该元素不为0则向新数组中插入一个该元素if(e) v.push_back(e);// 如果该元素为0则向新数组中插入两个该元素else{v.push_back(0);v.push_back(0);}}// 改变新数组的大小为老数组大小v.resize(arr.size());// 将老数组赋值给新数组arrv;}
};法二原地修改的做法 class Solution
{
public:void duplicateZeros(vectorint arr) {int narr.size();int cur0,dest-1;// 找最后一个复写的元素while(curn){if(arr[cur]0) dest2;else dest;if(destn-1) break;cur;}// 处理边界情况if(destn){arr[n-1]0;cur--;dest-2;}// 覆盖while(cur0){if(arr[cur]0){arr[dest--]arr[cur];arr[dest--]arr[cur--];}else{arr[dest--]arr[cur--];}}}
};