【leetcode】27-移除元素【C++】

    xiaoxiao2025-04-05  18

    题目如下:

    解题思路:

    先对数组排序,然后检索数组中瞒住条件的元素,用 count 记录满足条件的元素个数,用 flag 记录第一个满足条件元素的前一个元素的位置,之后向前移动后续的数组元素。

    代码如下:

    class Solution { public: int removeElement(vector<int>& nums, int val) { //数组为空,直接返回 if(nums.empty()) return 0; int l = nums.size(); int flag = -1, count = 0, res = 0; //当第一个元素就开始相等时,flag为-1 //排序数组 sort(nums.begin(), nums.end()); //count记录满足条件的数组元素个数,flag记录第一个满足条件元素的前一个位置 for(int i = 0; i < l; ) { if(nums[i] != val && count == 0){ //还未遇见相等元素 flag = i; i++; } else if(nums[i] == val){ //遍历相等元素 count++; i++; } else break; //相等元素全部遍历,直接退出循环 } //向前移动数组元素 for(int i = 1; flag+i+count < l; i++) { nums[flag + i] = nums[flag + i + count]; res++; } return (res + flag + 1); } };

     

    最新回复(0)