zoukankan      html  css  js  c++  java
  • Leetcode(27)-移除元素

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

    不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

    元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

    class Solution {
    public:
        int removeElement(vector<int>& nums, int val) 
        {
            for(int i=0;i<nums.size();i++)
            {
                if(nums[i]==val)
                {
                    nums.erase(nums.begin()+i);
                    i--;
                }
            }
            return  nums.size();
        }
    };

    同样是利用了STL中的vector中的erase函数,erase函数的用法有两种,

    iterator erase (iterator position);  //删除指定元素

    iterator erase (iterator first, iterator last);  //删除指定范围内的元素

    返回值是删除后的下一个元素的迭代器。

    我们这里使用的是第一种用法,删除指定的元素,因为参数是迭代器,所以就使用了erase(nums.begin()+i)表示删除第i个元素。同样erase之后会影响到整个vector的长度。

  • 相关阅读:
    WPF 便签项目
    .NET下WPF学习之Socket通信
    DEV控件
    字符串位数补足
    VS2008设置断点不命中
    错误描述: 242000021
    关闭Win10自带的 Windows Defender
    启用与关闭 Ad Hoc Distributed Queries
    Date工具类
    数据字段脱敏
  • 原文地址:https://www.cnblogs.com/mini-coconut/p/8977070.html
Copyright © 2011-2022 走看看