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

简易东莞网站制作公司中央人民政府

简易东莞网站制作公司,中央人民政府,facebook海外推广,网站首页只显示域名难度:简单题 题目 给定一个数组 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.zhongyajixie.com/news/45384.html

相关文章:

  • 简述企业网站建设的流程巨量引擎官网
  • 北京比较好的it公司漯河网站seo
  • 出色的网站怎样推广
  • java新手编程入门seo薪资
  • 做网站都要掌握什么软件天津天狮网络营销课程
  • 手游app开发公司seo顾问服务公司站长
  • 婚恋网站建设分析seo服务内容
  • 网站后台验证码无法显示新乡seo公司
  • 公司简历模板免费下载福建seo
  • 网站规划建设与管理维护手机网站建设价格
  • 做珠宝首饰网站网络培训学校
  • 织梦响应式茶叶网站模板免费b站软件推广网站2023
  • 金溪网站建设广州网站营销seo费用
  • 有帮人做网站的人吗百度网盘资源搜索引擎入口
  • 试玩平台wordpress青海网站seo
  • 网站建设工期安排表鹤壁搜索引擎优化
  • 网站怎么做抽奖如何创建一个自己的网站
  • 盐城做网站spider net网站建设平台哪家好
  • 浙江省建设厅建筑信息网官网济宁seo公司
  • 怎么在百度搜索自己的网站百度一下官网首页登录
  • iis搭建网站怎么做前端学校网站模板
  • 那个网站做的好免费的网站推广软件下载
  • 常州网站建设cz35sem是什么分析方法
  • wap企业网站模板seo的课谁讲的好
  • 商城网站用html做网络营销品牌推广公司
  • 阿里云ecs 怎么做网站seo是什么姓
  • 石家庄智能模板建站百度正式员工工资待遇
  • 将一个网站拉入黑名单怎么做百度账号中心官网
  • 贸易公司网站建阿拉营销网站
  • 百度添加网站网站优化联系