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

Leetcode面试经典150_Q80删除有序数组中的重复项 II

题目:

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

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

提示:

  • nums 已按升序排列

思路:使慢指针指向的数字和其向前数两个的位置上的数据与快指针指向的数字不相等

Python 解法:

class Solution:def removeDuplicates(self, nums: List[int]) -> int:def solve(k):u = 0for x in nums:if u < k or nums[u - k] != x:nums[u] = xu += 1return ureturn solve(2)

C++解法:

class Solution {
public:int removeDuplicates(vector<int>& nums) {int n = nums.size();if (n <= 2) {return n;}int slow = 2, fast = 2;while (fast < n) {if (nums[slow - 2] != nums[fast]) {nums[slow] = nums[fast];++slow;}++fast;}return slow;}
};

注:要求最多k个重复数字 则前k个可以不必检查

http://www.lryc.cn/news/335105.html

相关文章:

  • android 使用ollvm混淆so
  • Swift:在 Win10 上编程入门
  • Linux多进程通信(4)——消息队列从入门到实战!
  • [Flutter]导入singular_flutter_sdk后运行到Android报错
  • ChatGPT新手指南:如何用AI写出专业学术论文
  • 【ZZULIOJ】1047: 对数表(Java)
  • thinkphp6使用阿里云SDK发送短信
  • file_get_contents(‘php://input‘); 这个postman要如何传参
  • HDFS [MSST‘10] 论文阅读笔记
  • Feature Pyramid Networks for object detection
  • Linux下docker运行python
  • MacOS下载和安装HomeBrew的详细教程
  • AI技术在金融领域/银行业的应用和风险
  • 每日OJ题_两个数组dp⑤_力扣10. 正则表达式匹配
  • 开源区块链系统/技术 总结(欢迎补充,最新)
  • LeetCode 994—— 腐烂的橘子
  • 向上向下采样
  • Leetcode面试经典150_Q169多数元素
  • Spring Cloud微服务入门(五)
  • 负荷预测 | Matlab基于TCN-GRU-Attention单输入单输出时间序列多步预测
  • SpringBoot整合Spring Data JPA
  • 机器学习(五) -- 监督学习(2) -- k近邻
  • 【.NET全栈】ZedGraph图表库的介绍和应用
  • vivado 设计调试
  • Python3 replace()函数使用详解:字符串的艺术转换
  • 【C++】用红黑树封装map和set
  • 一些好玩的东西
  • 微电网优化:基于巨型犰狳优化算法(Giant Armadillo Optimization,GAO)的微电网优化(提供MATLAB代码)
  • java锁
  • QA测试开发工程师面试题满分问答6: 如何判断接口功能正常?从QA的角度设计测试用例