• lintcode-172-删除元素


    172-删除元素

    给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度。
    元素的顺序可以改变,并且对新的数组不会有影响。

    样例

    给出一个数组 [0,4,4,0,0,2,4,4],和值 4
    返回 4 并且4个元素的新数组为[0,0,0,2]

    标签

    数组 两根指针

    思路

    将待删除元素放入数组尾部,记录个数,然后将数组尾部元素删除即可

    code

    class Solution {
    public:
        /** 
         *@param A: A list of integers
         *@param elem: An integer
         *@return: The new length after remove
         */
        int removeElement(vector<int> &A, int elem) {
            // write your code here
            int size = A.size(), elemSize = 0, i = 0;
            if (size <= 0) {
                return 0;
            }
            
            while (i < size - elemSize) {
                if (A[i] == elem && A[size - 1 - elemSize] != elem) {
                    swap(A[i], A[size - 1 - elemSize]);
                    elemSize++;
                    i++;
                }
                else if (A[i] == elem && A[size - 1 - elemSize] == elem) {
                    elemSize++;
                }
                else if (A[i] != elem && A[size - 1 - elemSize] == elem) {
                    elemSize++;
                    i++;
                }
                else {
                    i++;
                }
            }
            for (i = 0; i < elemSize; i++) {
                A.pop_back();
            }
            return size - elemSize;
        }
    };
    
  • 相关阅读:
    leetcode231
    leetcode326
    leetcode202
    leetcode121
    leetcode405
    leetcode415
    2019-9-2-win10-uwp-应用转后台清理内存
    2019-9-2-win10-uwp-应用转后台清理内存
    ACM学习心得
    ACM学习心得
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7278275.html
Copyright © 2020-2023  润新知