Skip to content

移除指定元素 / removeElement

题目描述

从有序数组中原地删除指定的元素。

Code

javascript
function removeElement(nums, val) {
  let fast = 0,
    slow = 0;
  while (fast < nums.length) {
    // 确保 [0...slow] 都不包含 val
    if (nums[fast] !== val) {
      nums[slow] = nums[fast];
      slow++;
    }
    fast++;
  }
  return slow;
}

Test Cases

javascript
const { removeElement } = require('../docs/algo/array/removeElement');

describe('removeElement', () => {
    it('case1', () => {
        const nums = [1, 2, 3, 3, 3, 3, 4, 5];
        const expectResult = [1, 2, 3, 4, 5];
        const len = removeElement(nums, 3);
        expect(len === expectResult.length);
        for (let i = 0; i < len; i++) {
            expect(nums[i] === expectResult[i]);
        }
    });
    it('case2', () => {
        const nums = [1, 6, 2, 7, 6, 8, 2, 3, 5];
        const expectResult = [1, 2, 3, 4, 5];
        const len = removeElement(nums, 6);
        expect(len === expectResult.length);
        for (let i = 0; i < len; i++) {
            expect(nums[i] === expectResult[i]);
        }
    });
});