LeetCode 27.Remove Element

1.题目


2.题意

原地移除所有数值等于 val 的元素,返回移除后数组的新长度和新数组

3.我的解法

int removeElement(int* nums, int numsSize, int val) {
    int i;
    int len=0;
    
    for (i=0;i<numsSize;i++){
        if(nums[i]!=val){
            len++;
            nums[len-1]=nums[i];
        }
    }
    return len;
}

优于94%

4.优秀解法


int removeElement(int* nums, int numsSize, int val) {
    int i = 0;
    int n = numsSize;
    while (i < n) {
        if (nums[i] == val) {
            nums[i] = nums[n - 1];
            // reduce array size by one
            n--;
        } else {
            i++;
        }
    }
    return n;
}
由于不考虑返回数组的顺序,所以这个解法速度更快




猜你喜欢

转载自blog.csdn.net/baidu_31257925/article/details/80262296