移除数组元素
今天的题目仍然用到的是双指针的知识,使用两个指针,只不过针对这种移除元素的题目这里面蕴含着两种解题的方法,一种是直接使用指针,来进行重新排布,一种是通过将剔除项进行抛出,然后截断数组来获得需要的数组。
双指针法一
class Solution {
public int removeElement(int[] nums, int val) {
int i=0;
for (int j=0;j<nums.length;j++)
{
if(nums[j]!=val)
{
nums[i]=nums[j];
++i;
}
}
return i;
}
}
双指针法二
class Solution {
public int removeElement(int[] nums, int val) {
int i=nums.length;
int j=0;
while(j<i)
{
if(nums[j]==val)
{
nums[j]=nums[i-1];
i--;
}
else
{
j++;
}
}
return i;
}
}
这种方法是抛出了异常的数据,将原来的数组截断,获取题解;
Python实现
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
i=0;
for num in nums:
if num != val:
nums[i] = num
i+=1
return i