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

网站建设的参考书籍东莞关键词排名推广

网站建设的参考书籍,东莞关键词排名推广,江宁网站建设,怎么做自助购物网站题目链接:283. 移动零 - 力扣(LeetCode) 算法原理 解法一:辅助数组 开辟一个辅助数组,遍历原数组,每次遍历到非0元素的时候,就把它放入辅助数组里,最后让辅助数组覆盖原数组&…

题目链接:283. 移动零 - 力扣(LeetCode)

算法原理

解法一:辅助数组

开辟一个辅助数组,遍历原数组,每次遍历到非0元素的时候,就把它放入辅助数组里,最后让辅助数组覆盖原数组,但这是异地操作,不符合题目原地移动的要求、

                                    

解法二:利用双指针(注意是使用变量充当指针,不是真的第一个指针出来,i = 0,相当于有一个指针指向0下标)

移动零这类题非常经典,叫做数组分块,这道题是数组分两块,将数组在某些特定条件下分成两块,左边部分是非0,右边是0,它是快速排序最核心的一步,解法有特别多种,利用双指针是最经典的解法

定义两个指针:

  • cur:标记非0元素的最后一个位置(上图右边)
  • i:扫描数组

整个数组会结合这个 i 分成三个区域,[0, cur] 非0区域,[cur+1, i-1] 0区域,0[i, n-1]待扫描区域,用题目中的示例,[0,1,0,3,12],cur指向-1下标,i指向0下标,一开始 i 指向0元素,直接i++,0还是在 [cur+1, i-1] 区域的,i 指向非0元素,因为有0的干扰,[cur+1] 位置有个0,可以把0交换到 i 这个位置,再让cur++,就把这个非0元素包含在 [0, cur] 区域了,下图是模拟过程,可以参考理解

分类讨论:

  1. 遇到 0:直接 i++
  2. 遇到 1:swap(cur + 1,i),cur++,i++

 

代码: 

class Solution {
public:void moveZeroes(vector<int>& nums) {for(int i = 0, cur = -1; i < nums.size(); ++i){if (nums[i]) //非0元素//交换完cur+1后cur还要向后走,直接先自增swap(nums[++cur], nums[i]);}}
};

http://www.dtcms.com/wzjs/200541.html

相关文章:

  • 做购物网站 营业范围是什么网站seo推广公司靠谱吗
  • 太原做网站多少钱深圳外贸网站建设
  • 乐清企业网站制作网站推广工具有哪些
  • du制作网站百度如何搜索关键词
  • 南京成旭通网站建设公司怎么样百度平台投诉人工电话
  • 浙江做网站找谁网络推广平台大全
  • wordpress防止cc攻击宁波seo公司排名
  • 捕鱼游戏在哪做网站国际免费b站
  • 赣州营销网站建设申请网站怎样申请
  • 辽宁平台网站建设公司广州seo成功案例
  • 装修网站制作设计价格费用网上找客户有什么渠道
  • 网站排名优化平台产品怎样推广有效
  • 东莞做网站哪家公司好百度快照功能
  • 简单网站首页怎么做合肥seo排名公司
  • 百度验证网站有什么用seo怎么发布外链
  • 贵阳平台网站建设黄桃图片友情链接
  • WordPress影视站源码互联网十大企业
  • 江苏鑫圣建设工程有限公司网站百度一下百度首页官网
  • 网站如何做优化一套完整的运营方案
  • 贵阳网站建设哪家好方舟众志seo
  • 郑州网站建设微信小程序广州专业seo公司
  • 做美食网站的项目背景百度电商广告代运营
  • 雅安移动网站建设aso优化师工作很赚钱吗
  • 网站备案信息管理陕西网络推广介绍
  • 站内优化包括哪些商品推广软文范例300字
  • 如果一个网站的域名是百度搜索风云榜
  • 有没有做游戏评测的网站百度一下全知道
  • v9双语版网站怎么做百度搜索页
  • 音乐相册制作网站seo博客优化
  • 自媒体科技资讯wordpress主题搜索引擎优化的基本方法