Leetcode—27.移除元素【简单】

2023每日刷题(一)

Leetcode—27.移除元素

Leetcode—27.移除元素【简单】_第1张图片

无脑直接法实现代码

int removeElement(int* nums, int numsSize, int val){
    int i = 0;
    int length = 0;
    int j = 0;
    while(i < numsSize) {
        // 存在等于val的数组元素
        if(nums[i] == val) {
            j = i;
            int flag = 0;
            while(j + 1 < numsSize) {
                nums[j] = nums[j + 1];
                j++;
                flag = 1;
            }
            if((j + 1 == numsSize) && flag) {
                numsSize--;
            }
            if(flag == 0) {
                i++;
            }
            continue;
        } else {
            length++;
        }
        i++;
    }
    return length;
}

双指针法实现思想

Leetcode—27.移除元素【简单】_第2张图片

双指针法实现代码

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

双指针优化实现思想

Leetcode—27.移除元素【简单】_第3张图片

双指针优化实现代码

int removeElement(int* nums, int numsSize, int val){
    int left = 0, right = numsSize - 1;
    while(left <= right) {
        if(nums[left] == val) {
            nums[left] = nums[right--];
            
        } else {
            left++;
        }
    }
    return left;
}

测试结果

Leetcode—27.移除元素【简单】_第4张图片
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

你可能感兴趣的:(LeetCode刷题,leetcode,算法,c语言,经验分享)