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

万州集团网站建设阿里云网站备案多久

万州集团网站建设,阿里云网站备案多久,一个主做海贼王的网站,品牌微营销网站建设从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结 80. 删除有序数组中的重复项 II 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长…

从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结

80. 删除有序数组中的重复项 II

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

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

说明:
为什么返回数值是整数,但输出的答案是数组呢?
请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝
int len = removeDuplicates(nums);

// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。
for (int i = 0; i < len; i++) {
print(nums[i]);
}

示例 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 。 不需要考虑数组中超出新长度后面的元素。

提示:
1 <= nums.length <= 3 * 10410^4104
-10410^4104 <= nums[i] <= 10410^4104
nums 已按升序排列

解题思路
一个指针 i 用来遍历 nums 数组,另一个指针 index 始终指向有效数组的末尾。

当前位置上的元素与其前一个元素不相等时,即 nums[i - 1] != nums[i],进行覆盖并将当前位置的元素 nums[i],放到有效数组中最后的位置并令 count 值重新为 1(因为出现了新的元素并且该元素是第一次出现),即 nums[index++] = nums[i];

当相邻位置相等且 count < 2 时,由于题中说到每个元素最多出现两次,所以该元素还可以出现一次,则将当前位置上的元素放到有效数组中的最后位置并令记录该元素的出现次数,即 count++;

当相邻位置相等且 count == 2 时,说明当前值的元素已经出现连续两个相同的了,则不需要进行任何操作,直接 continue 即可。

直到遍历结束,最后返回有效数组的长度 index 即可。

示例:[1,1,1,2,2,3],其中有效数组长度初始为 index = 1. i = 1,nums[0] == nums[1] 且
count = 1,则 nums[1] = nums[1],count = 2,index = 2; i = 2,nums[1] ==
nums[2] 且 count = 2,直接跳过不进行任何处理; i = 3,nums[2] != nums[3] 则 nums[2] =
nums[3],count = 1,index = 3; i = 4,nums[3] == nums[4] 且 count = 1,则
nums[3] = nums[4],count = 2,index = 4; i = 5,nums[4] != nums[5] 则
nums[4] = nums[5],count = 1,index = 5;

最终返回:index = 5,有效数组为 [1, 1, 2, 2, 3]

注意题中说到的每个元素最多出现两次,可以将两次改为 k 次,此时只需要将第二个判断中的 count < 2 修改为 count < k
即可。

代码

class Solution {public int removeDuplicates(int[] nums) {int n = nums.length;if (n <= 2) return n;int count = 1;int index = 1;for (int i=1;i<n;i++) {if (nums[i] != nums[i - 1]) {nums[index++] = nums[i];count = 1;} else if (count < 2) { // 两个元素值相等并且之前没有重复nums[index++] = nums[i];count++;} else {continue;}}return index;}
}

时间复杂度:O(n) 空间复杂度:O(1)

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

相关文章:

  • 权重较高网站品牌建设专家库推荐表
  • 东莞网站建设电镀挂具定兴做网站的
  • 高端网站建设公司零零万基城市建设有限公司网站
  • 设计师万能导航网站天津市建设工程质量协会网站
  • 泰然建设网站手机兼职任务平台
  • 多域名指向同一网站网络营销的方法是什么
  • 专门做行业分析的网站搭建房子流程
  • wordpress设置金币深圳网站建设seo优化
  • 深圳自助建站系统学习建网站
  • 自己做链接网站装修包工头接活网站
  • 网站xml平台怎么推广
  • 购买网站开发服务费入账公司网站建设的要点
  • wordpress友情链接代码手机网站怎么做才适合优化
  • 自然景观网站模板做网站的工作
  • asp做网站优点平面设计外包公司
  • 自己做网站自己做推广教程视频教程仁寿网站建设
  • 网站建设 跑业务专业的微网站公司
  • 海口自助建站wordpress小子邀请码
  • 公众号自己做电影网站吗济南手机网站建设公司报价
  • 公司注销后 网站备案吗微信网站下载
  • 网站开发和网页设计想学企业管理课程
  • 苏州网站快速推广网站开发范围
  • 阿里巴巴做网站难吗一个微信公众号可以做几个网站
  • 网站建设百度优化南宁百度关键词推广
  • 前端做网站步骤网站可以建几个人
  • 快速学习网站制作网站开发虚拟主机管理系统
  • 2008建设网站安徽餐饮网站建设
  • 宿迁建设局网站a类证查询纪梵希网站设计分析
  • 网站建设不用虚拟主机分享网络营销方式
  • a5站长网wordpress相册模板