本文介绍: 思路:用双指针遍历数组,如果快指针和慢指针的值一样,那么删除快指针对应的值,否则对它们进行++,进行迭代,进入下一步排查,直到数组遍历完成。在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料。这是关于一个普通双非本科大一学生的C++的学习记录贴。,返回删除后数组的新长度。今天分享的是关于vector的题目。删除重复出现的元素,使每个元素。
这是关于一个普通双非本科大一学生的C++的学习记录贴
在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料
那么开启正题
今天分享的是关于vector的题目
1.删除有序数组中的重复项
给你一个 非严格递增排列 的数组 nums
,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums
中唯一元素的个数。
考虑 nums
的唯一元素的数量为 k
,你需要做以下事情确保你的题解可以被通过:
- 更改数组
nums
,使nums
的前k
个元素包含唯一元素,并按照它们最初在nums
中出现的顺序排列。nums
的其余元素与nums
的大小不重要。 - 返回
k
思路:用双指针遍历数组,如果快指针和慢指针的值一样,那么删除快指针对应的值,否则对它们进行++,进行迭代,进入下一步排查,直到数组遍历完成
class Solution {
public:
int removeDuplicates(vector<int>& nums)
{
int slow = 0;
int fast = 1;
while(fast < nums.size())
{
if(nums[slow] == nums[fast])
{
nums.erase(nums.begin() + fast);
}
else
{
++slow;
++fast;
}
}
return nums.size();
}
};
这是ac代码
今天的博客就到这里了,后续内容明天分享,最近因为考试周原因不能更新太多内容,等考试周结束了再”快马加鞭”
新手第一次写博客,有不对的位置希望大佬们能够指出,也谢谢大家能看到这里,让我们一起学习进步吧!!!
原文地址:https://blog.csdn.net/2301_80764270/article/details/135854532
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_63091.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。