题目

27. 移除元素

题解





注:第二种思路实际上是覆盖。

代码

public class code27 {
    public static int removeElement(int[] nums, int val) {
        // Arrays.sort(nums);
        int i = 0;
        for (int j = 0; j < nums.length; j++) {
            if (nums[j] != val) {
                nums[i] = nums[j];
                i++;
            }
        }
        return i;
    }

    // public static int removeElement(int[] nums, int val) {
    // int ans = nums.length;
    // for (int i = 0; i < ans;) {
    // if (nums[i] == val) {
    // nums[i] = nums[ans - 1];
    // ans--;
    // } else {
    // i++;
    // }
    // }
    // return ans;
    // }

    public static void main(String[] args) {
        int nums[] = { 0, 1, 2, 2, 3, 0, 4, 2 };
        int val = 2;
        int len = removeElement(nums, val);
        for (int i = 0; i < len; i++) {
            System.out.print(nums[i] + " ");
        }
        System.out.println();
    }
}

参考

  1. 题解一——移除元素
  2. 题解二——画解算法:27. 移除元素