您的位置:首页 > 其它

Leetcode:26 Remove Duplicates from Sorted Array

2017-11-21 17:46 381 查看
问题描述:

Given a sorted array, remove the duplicates in-place such
that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this by modifying the input array in-place with
O(1) extra memory.

解决思路:

对于此类问题,对于存储空间的要求比较严格,对于数组而言,简化空间的使用,那么可以在本身的基础上通过覆盖赋值来减小空间复杂度,从而实现题目所要求的O(1)的时间复杂度。

核心代码如下:class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int tag=1; //作为在原数组上创造新数组的赋值标记,第一个数不用管
for(int i=1;i<nums.size();i++)
if(nums[i]==nums[i-1]) continue; //如果对于升序序列中连续相等的话,原标i递增,tag不变
else nums[tag++]=nums[i]; //如果对于升序序列不相等的话,则在新数组的基础上赋值那个不相等的元素
return tag;
}
};因为新数组的赋值在旧数组上是相对之前的,所以新的赋值不会对后续的对与旧数组的操作产生影响,因此可以巧妙的赋值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: