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

肇庆网站建设常州微信网站建设教程

肇庆网站建设,常州微信网站建设教程,wordpress按钮支付,青岛设计网站公司【中等题】 题目: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额…

【中等题】

题目:

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

示例:

示例 1:

输入:nums = [1,1,1,2,2,3]
输出:5, nums = [1,1,2,2,3]
解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。 不需要考虑数组中超出新长度后面的元素。
示例 2:

输入:nums = [0,0,1,1,1,1,2,3,3]
输出:7, nums = [0,0,1,1,2,3,3]
解释:函数应返回新长度 length = 7, 并且原数组的前五个元素被修改为 0, 0, 1, 1, 2, 3, 3。不需要考虑数组中超出新长度后面的元素。

思路:

【双指针】维护一个区间,left作为左边界,right作为有边界。如果区间大小大于2,就移动数组。如果right元素与left不同的时候,就让 left变成right继续往右走。

代码:

class Solution {
public:int removeDuplicates(vector<int>& nums) {int left = 0, right = 0;while(left < nums.size() && right < nums.size()){// 区间内元素相等,且区间大小小于等于2if ((nums[right] == nums[left]) && (right - left != 2)) {right++;continue;}// 如果遇到超过两个相等的元素,就从后往前移动数组else if ((nums[right] == nums[left]) && (right - left == 2)) {for (int j = right+1; j < nums.size(); j++) {nums[j - 1] = nums[j];}// 删除尾元素,vector数组长度减1nums.pop_back();}// 更新左边界else if (nums[right] != nums[left]) {left = right;}}return nums.size();}
};

运行结果 

把while判断条件改成:

 while(right < nums.size())

运行结果明显变好:

http://www.yayakq.cn/news/375204/

相关文章:

  • 局网站建设情况中国最大的门户网站是
  • 北京市通信管理局 网站备案昆明app制作的公司
  • 网站编辑框超链接怎么做新能源汽车价格走势
  • 宝安福永小学网站建设特产网站建设方案
  • 华为云建设网站做心理咨询的网站
  • 建设银行官方网站购房贷款利率四川省网站建设
  • 南京seo网站建设费用上海先进网站设计
  • 网站空间合同广州市外贸网站建设企业
  • 地质公园网站建设html在线模板
  • 多媒体教学网站开发的一般步骤杭州网站设计费用
  • 没有网站如何做cps怎样建设的网站好优化好排名
  • 如何提高网站的自然排名龙岗平湖网站建设公司
  • 网站定制设计价目表增加收录网站
  • 做网站排行wpf视频教程 -.net购物网站开发
  • 网站默认主页名钓鱼网站源码
  • 做动态图的网站苏州室内设计公司排名
  • 免费发帖推广网站网络营销的概念和内涵
  • 南京网站定制公司洛阳seo
  • 网站数据库怎么建立开发公司调研汇报材料怎么写
  • 做网站赚外快百度浏览器下载安装
  • 做网站怎么收集资料网站 前端 后端
  • 怎么做购物优惠券网站网站横幅图片
  • 做视频网站用哪个cms低价自适应网站建设
  • 定陶住房和城乡建设局网站淄博网站排名
  • 爱站关键词挖掘old互联网之光博览会参展企业
  • 廊坊网站的优化网站建设与规划实训报告
  • 好f123网站软件开发流程八个步骤
  • 网站建设公司的网站我要推广网
  • 网站数据库要多大进了网站的后台系统 怎么改公司的网站
  • 广东网站推广公司wordpress怎么做信息流广告