【Leetcode】Remove Element #27

来源:互联网 发布:德州扑克入门知乎 编辑:程序博客网 时间:2024/05/29 17:17

Given an array and a value, remove all instances of that value in place and return the new length.

The order of elements can be changed. It doesn't matter what you leave beyond the new length.


题目很简单,类似于简化版的quick sort split。以一个index作为查询,以一个index作为新的vector的end即可。

class Solution {public:    int removeElement(vector<int>& nums, int val) {        int currentEnd = 0;        for (int i = 0; i < nums.size(); ++i)        {            if (nums[i] == val)                continue;            else {                if (currentEnd != i)                {                    swap(nums[currentEnd], nums[i]);                }                currentEnd++;            }        }        return currentEnd;    }private:    void spap(int &a, int &b) {        int temp = a;        a= b;        b =  temp;    }};

附贴一个quicksort中用的split,假设以第一个element作为split key

void split(vector<int> &input) {    int end = 0;    int index = input[0];    for (int i = 0; i < input.size(); ++i)    {        if(input[i] <= index){            swap(input[i],input[end]);            end++;        }    }    if (end != 0)        swap(input[0],input[end-1]);}


0 0
原创粉丝点击