当前位置: 首页 > news >正文

上海网页制作服务东莞seo推广公司

上海网页制作服务,东莞seo推广公司,烟台网站排名优化报价,中国能源建设股份有限公司新网站难度:简单题 题目 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 思路: 一开始想,从前往后遍历&am…

难度:简单题

题目

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

思路:

一开始想,从前往后遍历,遇到0就挪到最后。类似于冒泡的思想,但是这样做的话时间复杂度可能是 三次方。

再想,从前往后遍历,利用 stl-vector 的特性,遇到0就从这个vector里面删除当前元素,但是删除这个元素的话,该vector数组结构会发生变化,即当前下标指向的自动变为下一个元素,所以下标这里要减1。

代码:

class Solution {
public:void moveZeroes(vector<int>& nums) {// 要保持非零元素的相对顺序,不能排序!// 依次遍历,遇到0元素,则用冒泡排序的思想挪到最后 时间复杂度 三次方??// 思路,依次遍历,如果遇到0,则从vector中删掉该元素,并记录删了几个,最后添上去// 遍历时删元素会不会使数组下标发生变化?会使数组结构发生变化!int i = 0;int n = 0;  // 记录删掉了几个0for(i = 0; i < nums.size(); i++){if(nums[i] == 0){nums.erase(nums.begin()+i);n++;i--;    // 删掉当前元素,数组会立即发生变化!}}// 删了几个元素,后面补几个0        for(i = 0; i < n; i++){nums.push_back(0);}}
};

运行结果:

好吧,看了一下官方双指针代码,它的效果要好一点。。

class Solution {
public:void moveZeroes(vector<int>& nums) {int left = 0, right = 0;int n = nums.size();while(right < n){if(nums[right]){swap(nums[left], nums[right]);left++;}right++;}}
};

 它的思路:

 

 

 

http://www.shuangfujiaoyu.com/news/43623.html

相关文章:

  • 如何查看网站建设的时间全球网站流量查询
  • 做投票的网站廊坊seo网络推广
  • 服务器网站模板怎么做市场营销和推广
  • 天津河东做网站手机端百度收录入口
  • javascript 做网站企业网络营销推广方案策划
  • 网站开发合同预期新手怎么入行seo
  • 谁有wap网站青岛seo网络优化公司
  • 企业网站开发到上线的视频晋江友情链接是什么意思
  • 北京梦活力网站建设百度seo推广优化
  • 做围棋死活题的网站安全优化大师
  • 做网站需知如何免费做网站推广的
  • 给人做网站的企业网站优化服务
  • 开发一个网站大概多少钱网络销售工资一般多少
  • wordpress做的学校网站广州线下培训机构停课
  • 网络代理加速器google seo 优化
  • 怎么看一个网站做的好不好天天seo伪原创工具
  • 可信网站注册东莞百度快照优化排名
  • python可以做复杂网站天津百度推广网络科技公司
  • 我想做个网站找谁做百度快照优化排名怎么做
  • wordpress加速优化seo技术培训班
  • 重庆网站推广机构百度下载安装2021
  • 安装网站到服务器百度快照怎么使用
  • WordPress 主页分页做神马seo快速排名软件
  • 新网站怎样做优化长尾关键词挖掘
  • 以下不属于网站建设优化网站的宣传推广方式
  • 网站推广排名公司网站制作维护
  • 安徽网站设计流程网页开发公司
  • 空滤网站怎么做百度下载安装最新版
  • 做电销哪些网站可以找到客户端宁波关键词网站排名
  • 做网站襄樊首页