给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

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

我的实现:(效率很低,276ms)

class Solution {
public:int removeDuplicates(vector<int>& nums) {int ret = nums.size();for (int i = 0 ; i< ret - 1;){if(nums.at(i) != nums.at(i+1)){++i;continue;}else{for(int j = i ; j < ret-1; ++j){nums.at(j) = nums.at(j+1);}ret--;}}return ret;}
};

大神实现:(16ms)

1 class Solution {
2 public:
3     int removeDuplicates(vector<int>& nums) {
4          nums.erase(std::unique(nums.begin(), mums.end()), nums.end());
5          return noms.size();
6     }
7 }    

std::unique,

消除连续组中的除了第一个元素的其他相同的元素;

消除后的元素之间的相对位置不变;

返回新的past-the-end;

http://en.cppreference.com/w/cpp/algorithm/unique

参考std::unique的实现了一个版本:(28ms)

class Solution {
public:int removeDuplicates(vector<int>& nums) {int ret = 1;vector<int>::iterator beginIter = nums.begin();vector<int>::iterator endIter = nums.end();if(beginIter == endIter)return 0;vector<int>::iterator resultIter = beginIter;while(++beginIter != endIter){if((*beginIter != *resultIter) ){  ++resultIter;*resultIter = std::move(*beginIter);++ret;}}++resultIter;return ret;}
};

转载于:https://www.cnblogs.com/jimobuwu/p/8961069.html

26.删除排序数组中的重复项相关推荐

  1. 26. 删除排序数组中的重复项 golang

    26. 删除排序数组中的重复项 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 ...

  2. [LeetCode][Python][C#]刷题记录 26. 删除排序数组中的重复项

    这道题我真的纠结好久,因为没注意那个原地的题目要求,所以很奇怪怎么我电脑运行成功,但是LeetCode上运行就是不对.气哭. 感谢群友lino的帮助.他试了set方法不行,直接喂给我的答案了... 题 ...

  3. ios 数组中的字典排序_题解 | 26.删除排序数组中的重复项

    假设我们有一个传感器,会不停地向 HQ 传输已经归类好数据,数据的格式全部是数字(种类编号),且已经按照从小到大的顺序排列,大概是 [1,1,4,5,7,9] 这样的,但是我们的需求在于,希望知道有多 ...

  4. C++描述 LeetCode 26. 删除排序数组中的重复项

    C++描述 LeetCode 26. 删除排序数组中的重复项   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客 ...

  5. LeetCode 25K 个一组翻转链表26删除排序数组中的重复项

    如果问题或者其他方法还请分享,如加入打卡微信搜索bigsai回复进群一起打卡. K个一组翻转链表 题目要求 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小 ...

  6. LeetCode(#26)————删除排序数组中的重复项

    题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示 ...

  7. leetcode 26 删除排序数组中的重复项

    https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素 ...

  8. 26. 删除排序数组中的重复项

    给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1 ...

  9. python有序数组中删除元素_python刷LeetCode:26. 删除排序数组中的重复项

    题目描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...

最新文章

  1. 背景属性的相关属性设置
  2. scrapy 伪装代理和 fake_userAgent 的使用
  3. 【操作系统】库函数与系统调用的区别
  4. 用VMware虚拟机安装XP3
  5. 面向 Java 开发人员的 db4o 指南: 简介和概览
  6. 软件工程——软件详细设计
  7. 英文分词的算法和原理
  8. 28388D上电时从BOOT跳转到main过程分析
  9. 伍斯特理工学院计算机科学硕士,2020年伍斯特理工学院排名TFE Times美国最佳计算机科学硕士专业排名第100...
  10. Mapping映射入门
  11. 第 29 章 电阻触摸屏—触摸画板
  12. 微信应用架构!!-----微信应用能力篇
  13. Ant Design Pro(5)-3.UI配置
  14. nodejs调用java的jar包进行PPT转pdf
  15. 自我思辨的力量-追求完美的内心驱动
  16. 5. Layui数据表格的快速使用
  17. VR科普主题项目VR模拟体验设备VR科普馆
  18. Java bouncycastle 包实现椭圆曲线计算
  19. 心目中的编程高手,经典计算机书籍作者介绍(部分,以后不定期更新)!
  20. Java代码点和代码单元及其区别

热门文章

  1. SQL Server 2016 行级别权限控制
  2. Xcode调试命令大全 (LLDB Cheatsheet)
  3. 好班微校云信聊天解读记录
  4. Python 办公自动化:让你的工作效率翻番
  5. 10 分钟上手 Vue 组件 Vue-Draggable
  6. 他爬取了B站所有番剧信息,发现了这些……
  7. MySQL+号的作用
  8. MySQL 高级 while循环
  9. MySQL 高级 - 索引 - 概述
  10. Nginx负载均衡策略之least_conn