27. Remove Element

来源:互联网 发布:json转java实体对象 编辑:程序博客网 时间:2024/06/06 18:26

细节扣的好细啊,难怪提交成功率低,不是没有道理。
总的思想就是前后各有一个indexLeft,indexRight,indexLeft对应左边第一个val值的位置,indexRight对应右边第一个非val值对应的位置。需要返回的length是,最后没有val值的nums的长度。

class Solution {public:    int removeElement(vector<int>& nums, int val) {        if(nums.size()==0)            return 0;        int leftIndex=0;        int rightIndex=nums.size()-1;        while(leftIndex<=rightIndex)        {            //find a good rightIndex            while(rightIndex>=0&&nums[rightIndex]==val) rightIndex--;            //find a good leftIndex            while(leftIndex<nums.size()&&nums[leftIndex]!=val) leftIndex++;            if(leftIndex>=rightIndex)                break;            nums[leftIndex]=nums[rightIndex];            nums[rightIndex]=val;            leftIndex++;            rightIndex--;        }        return rightIndex+1;    }};
0 0
原创粉丝点击