当前位置:   article > 正文

LeetCode27:移除元素_remove(nums.begin(), nums.end(), val)- nums.begin(

remove(nums.begin(), nums.end(), val)- nums.begin()

题源力扣

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

要求:空间复杂度 O(1);元素的顺序可以改变

C++:

时间复杂度O(n),将数组变成有序后,用后面元素替换值为val的元素

  1. class Solution {
  2. public:
  3. int removeElement(vector<int>& nums, int val) {
  4. sort(nums.begin(),nums.end());//形成有序数组
  5. int cond=nums.size();
  6. for(int i=0;i<nums.size();i++){
  7. if(nums[i]==val){
  8. nums[i]=nums[cond-1];
  9. cond--;
  10. }
  11. }
  12. return cond;
  13. }
  14. };

另:采用STL源码remove()函数

remove()返回指向尾值的迭代器;

  1. class Solution {
  2. public:
  3. int removeElement(vector<int>& nums, int val) {
  4. return remove(nums.begin(),nums.end(),val)-nums.begin();
  5. }
  6. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/209685
推荐阅读
相关标签
  

闽ICP备14008679号