本文共 747 字,大约阅读时间需要 2 分钟。
为了解决这个问题,我们需要使用就地算法在数组中删除所有等于给定值的元素,并返回新数组的长度。以下是详细的解决方案:
我们可以使用一个容量变量来跟踪当前数组的有效长度。在遍历数组时,每当遇到需要删除的元素时,我们将其替换为容量变量对应位置的元素,然后调整容量变量。这样可以确保在删除元素时不会影响到后续元素的索引位置,从而避免索引越界的问题。
public class Solution { public int removeElement(int[] A, int n, int elem) { int capacity = n; for (int i = 0; i < capacity; i++) { if (A[i] == elem) { if (i < capacity) { A[i] = A[--capacity]; } } } return capacity; }} capacity初始化为数组的长度n,用于跟踪当前数组的有效长度。elem,则执行删除操作。这种方法的时间复杂度为O(n),空间复杂度为O(1),因为我们在原数组上进行操作,不需要使用额外的空间。
转载地址:http://zfdg.baihongyu.com/