Leetcode:26 Remove Duplicates from Sorted Array

问题描述:

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;
    }
};
因为新数组的赋值在旧数组上是相对之前的,所以新的赋值不会对后续的对与旧数组的操作产生影响,因此可以巧妙的赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值