[Leetcode]Remove Duplicates from Sorted Array & Remove Element

No.26, Remove Duplicates from Sorted Array

No.27, Remove Element

第一个题是给定一个已经排序的数组,去掉里面所有重复的数字,返回新长度。

这道题不用处理新长度之后的数组元素。那么只需要把不重复的往前面写即可,使用一个计数器看现在写到数组的哪一个位置了,每遍历到一个新数字,则将计数器向后挪一个。最后长度也就是计数器的值。

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if(nums.empty()){
            return 0;
        }
        int lastnumber=nums[0];
        int number_point=1;
        for(int i=1;i<nums.size();i++){
            if(lastnumber!=nums[i]){
                lastnumber=nums[i];
                nums[number_point]=nums[i];
                number_point++;
            }
        }
        return number_point;
    }
};

第二个题是给定一个数组和一个值,把数组中的该值都去掉,返回一个修改后的数组和数组长度。

跟第一题类似,可以采用一个个遍历再写的方法。当然如果不要求顺序,也可以在效率上采用把最后的元素往前面填坑的方法。

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        if(nums.empty()){
            return 0;
        }
        int number_point=0;
        int count=0;
        for(int i=0;i<nums.size();i++){
            if(nums[i]!=val){
                nums[number_point]=nums[i];
                number_point++;
                count++;
            }
        }
        return count;
    }
};
原文地址:https://www.cnblogs.com/lilylee/p/5257944.html