https://leetcode.cn/problems/remove-element/description/?envType=study-plan-v2&envId=top-interview-150

 

go

func removeElement(nums []int, val int) int {
    i := 0
    j := len(nums) - 1
    s := 0

    for _, v := range nums {
        if v == val {
            s++
        }
    }

    for i < j {
        for i <= j && nums[i] != val {
            i++
        }
        for j >= i && nums[j] == val {
            j--
        }
        if i < j {
            nums[i] = nums[j]
            i++
            j--
        }
    }

    return len(nums) - s
}

 java

package leetcode150;

import org.junit.Test;

public class a2_removeElement {

    @Test
    public void test(){
        int[] nums = {3, 2, 2, 3};
        int k = removeElement(nums, 3);
        System.out.println(k);
        for (int i = 0; i < k; i++) {
            System.out.print(nums[i] + " ");
        }
    }

    public int removeElement(int[] nums, int val) {
        int i = 0, j = nums.length - 1, s = 0;
        for (int i1 = nums.length - 1; i1 >= 0; i1--) {
            if (nums[i1] == val) {
                s++;
            }
        }
        while (i < j) {
            for (; i <= j && nums[i] != val; i++) {
            }
            for (; i <= j && nums[j] == val; j--) {
            }
            if (i < j) {
                nums[i++] = nums[j--];
            }
        }
        return nums.length - s;
    }

}