26.删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 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.删除排序数组中的重复项相关推荐
- 26. 删除排序数组中的重复项 golang
26. 删除排序数组中的重复项 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 ...
- [LeetCode][Python][C#]刷题记录 26. 删除排序数组中的重复项
这道题我真的纠结好久,因为没注意那个原地的题目要求,所以很奇怪怎么我电脑运行成功,但是LeetCode上运行就是不对.气哭. 感谢群友lino的帮助.他试了set方法不行,直接喂给我的答案了... 题 ...
- ios 数组中的字典排序_题解 | 26.删除排序数组中的重复项
假设我们有一个传感器,会不停地向 HQ 传输已经归类好数据,数据的格式全部是数字(种类编号),且已经按照从小到大的顺序排列,大概是 [1,1,4,5,7,9] 这样的,但是我们的需求在于,希望知道有多 ...
- C++描述 LeetCode 26. 删除排序数组中的重复项
C++描述 LeetCode 26. 删除排序数组中的重复项 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客 ...
- LeetCode 25K 个一组翻转链表26删除排序数组中的重复项
如果问题或者其他方法还请分享,如加入打卡微信搜索bigsai回复进群一起打卡. K个一组翻转链表 题目要求 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小 ...
- LeetCode(#26)————删除排序数组中的重复项
题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示 ...
- leetcode 26 删除排序数组中的重复项
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素 ...
- 26. 删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1 ...
- python有序数组中删除元素_python刷LeetCode:26. 删除排序数组中的重复项
题目描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...
最新文章
- 背景属性的相关属性设置
- scrapy 伪装代理和 fake_userAgent 的使用
- 【操作系统】库函数与系统调用的区别
- 用VMware虚拟机安装XP3
- 面向 Java 开发人员的 db4o 指南: 简介和概览
- 软件工程——软件详细设计
- 英文分词的算法和原理
- 28388D上电时从BOOT跳转到main过程分析
- 伍斯特理工学院计算机科学硕士,2020年伍斯特理工学院排名TFE Times美国最佳计算机科学硕士专业排名第100...
- Mapping映射入门
- 第 29 章 电阻触摸屏—触摸画板
- 微信应用架构!!-----微信应用能力篇
- Ant Design Pro(5)-3.UI配置
- nodejs调用java的jar包进行PPT转pdf
- 自我思辨的力量-追求完美的内心驱动
- 5. Layui数据表格的快速使用
- VR科普主题项目VR模拟体验设备VR科普馆
- Java bouncycastle 包实现椭圆曲线计算
- 心目中的编程高手,经典计算机书籍作者介绍(部分,以后不定期更新)!
- Java代码点和代码单元及其区别