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

网页设计旅游网站源代码免费wordpress结构化数据

网页设计旅游网站源代码免费,wordpress结构化数据,手机开发者模式怎么调成高性能,amh安装wordpress复写零 一、题目链接二、题目三、算法原理1、先找到最后一个要复写的数——双指针算法1.5、处理一下边界情况2、“从后向前”完成复写操作 四、编写代码五、时间复杂度和空间复杂度 一、题目链接 复写零 二、题目 三、算法原理 解法:双指针算法 先根据“异地”操…

复写零

  • 一、题目链接
  • 二、题目
  • 三、算法原理
    • 1、先找到最后一个要复写的数——双指针算法
    • 1.5、处理一下边界情况
    • 2、“从后向前”完成复写操作
  • 四、编写代码
  • 五、时间复杂度和空间复杂度

一、题目链接

复写零

二、题目

在这里插入图片描述

三、算法原理

解法:双指针算法

先根据“异地”操作,然后优化成双指针下的“就地”操作。

异地操作完成复写零:定义两个指针,一个指针cur指向原来的数组,一个指针dest指向新开辟的数组。两个指针从左往右操作。当cur指向非零,抄一遍;当cur指向零,抄两遍。当dest越界复写结束。

在这里插入图片描述

就地操作模拟异地操作:cur、dest都会指向原始数组。

在这里插入图片描述
我们发现会将非0元素覆盖为0,所以从前往后操作在本题行不通。

但是“删除数组中值为val的元素”这一题必须从前往后,同样先根据异地操作总结模拟规律,后就地根据双指针完成,因为是删除,所以dest肯定在cur前面,因此肯定不能覆盖那些未操作的数。

在这里插入图片描述

那么在本题“复写零”中从前往后不行,那么试试从后往前呢?两个指针初始位置怎么确定?抄写元素肯定要抄写到最后一位,所以dest在最后一个位置,那么cur指向最后一个要复写的数。

还是用示例1分析,dest指向数组最后一个位置,cur指向最后一个要复写的元素4,让复写操作从后往前进行。dest往前走的过程中,dest要修改的数已经复写过了就可以大胆地覆盖:

在这里插入图片描述

1、先找到最后一个要复写的数——双指针算法

我们发现从后往前走确实可行,但是要先找到最后一个要复写的数——双指针算法

dest:始终指向完成复写的位置,所以初始位置在下标-1处。过程中判断dest是否到数组最后一个位置。
cur:从前向后遍历数组,决定dest向后移动1步或2步。所以初始位置在下标0处。

在这里插入图片描述

步骤:

  1. 判断cur指向的值
  2. cur的值决定dest是向后移动1步(cur为非0)或2步(cur为0)
  3. 判断dest是否到数组中的最后一个位置(若到最后,终止操作)
  4. 若dest没到最后,++cur

在这里插入图片描述
到最后,cur指向最后一个要复写的数;dest指向数组中的最后一个位置,也就是将“最后一个复写的数”写到的位置。这个位置就是cur、dest从后向前操作的起始位置。

1.5、处理一下边界情况

但是这样“找”在提交代码时还是会有问题的,特殊示例:

在这里插入图片描述
只会在最后一个要复写的数为0时dest才会越界,dest完成“从后向前”会对数组越界访问,在LeetCode上越界访问会报错。

若dest越界了:

  1. 数组下标n - 1处的值改为0
  2. cur- -、dest - = 2

2、“从后向前”完成复写操作

前面有复写操作的图片,这里就拿过来啦

在这里插入图片描述

四、编写代码

class Solution {
public:void duplicateZeros(vector<int>& arr) {// 1.先找到最后一个要复写的数--双指针算法int cur = 0, dest = -1, n = arr.size();while (dest < n){// 判断cur指向的值,决定dest走1步或2步if (arr[cur]) dest++;else dest += 2;// dest到最后了,cur所指就是最后复写的数if (dest >= n - 1) break;// dest没到最后++cur;}// 处理边界情况if (dest == n){arr[n - 1] = 0;--cur; dest -= 2;}// 2."从后向前"完成复写操作while (cur >= 0 && dest >= 0){if (arr[cur]) arr[dest--] = arr[cur--];else{arr[dest--] = 0;arr[dest--] = 0;--cur;}}}
};

五、时间复杂度和空间复杂度

虽然是两个while循环,但是常数级别的时间是可以忽略的,因此时间复杂度是O(n),整体的时间复杂度就相当于遍历一遍数组就可以完成“复写”的操作。

空间复杂度只有限的使用到了3个变量,所以空间复杂度是O(1)


文章转载自:

http://ZeXTsiP3.mysmz.cn
http://2xmOpHtd.mysmz.cn
http://L9bcaEjP.mysmz.cn
http://CuSfVKCS.mysmz.cn
http://BkENp7py.mysmz.cn
http://XqeDTnKB.mysmz.cn
http://EzVbgZcE.mysmz.cn
http://cCUCOB2X.mysmz.cn
http://1AcOAAz8.mysmz.cn
http://5SEohdgC.mysmz.cn
http://W5HYC8Yb.mysmz.cn
http://azl7EdyX.mysmz.cn
http://lBdaENY6.mysmz.cn
http://6yCTU013.mysmz.cn
http://ggNBjlIM.mysmz.cn
http://ZYGKTg6u.mysmz.cn
http://JjqHe8TU.mysmz.cn
http://AGNSPSh9.mysmz.cn
http://ZeTd5lTb.mysmz.cn
http://txUNi7S0.mysmz.cn
http://6MQSFWjZ.mysmz.cn
http://gGPedpHb.mysmz.cn
http://tnhbAnpX.mysmz.cn
http://VOe9FhYQ.mysmz.cn
http://advJf3S2.mysmz.cn
http://Zd4yxUoL.mysmz.cn
http://j3VQD3db.mysmz.cn
http://GuNcZhsF.mysmz.cn
http://aW8V8cTf.mysmz.cn
http://PmFwz9eB.mysmz.cn
http://www.dtcms.com/wzjs/662298.html

相关文章:

  • 网站改版需要多久WordPress打开后是搜索结果
  • 百度学术查重做网站优化哪家公司好
  • 如何进行微网站开发wordpress上传插件
  • 上海中小企业网站建设丹阳网站建设策划
  • 建网站是自己做还是用CMSwordpress近期文章
  • 英文网站 常用字体网络营销能干什么工作
  • 万州建设工程信息网站株洲关键词seo优化服务商
  • 智能建站程序wordpress the_content() 不显示
  • 专业商城网站制作电子商务网站建设与规划教案
  • 网站建设经费保障wordpress进入站点
  • 黄骅市做网站外包给网站建设注意事项
  • 网站可信查验郑州网站制作培训学校
  • 大连的网站建设长沙cms模板建站
  • 在线网站建设培训班手机如何访问电脑做的asp网站
  • 网站建设在哪表格网站怎么做的
  • 网站栏目规划wordpress不同栏目使用不同模板
  • 建设银行网站银行登录平台推广活动策划方案
  • 网站导航栏全屏怎么做的怎样做网站上的语种链接
  • 网站可信认证公司做网站的 oa办公系统
  • 合肥网站建设新浪营销5988创业商机网
  • 网站开发前期功能策划建设一个网站多少钱呢
  • django商城网站开发的功能门户网站微信服务号建设方案
  • 企业网站建设协议范本企业营销网络建设
  • 襄阳哪里做网站家居商城网站模板
  • 网站开发常用的语言和工具中国空间站什么时候建成
  • 深圳市网站设计公做网站的大公司都有哪些
  • 软件开发需要什么学历郑州网站关键词优化公司哪家好
  • 简单个人网站欣赏网站建设合同中的违约责任
  • 湖南省邵阳建设局网站重庆优化网站推广
  • 温州网站优化指导凡科外贸网站建设