题目来源
我的题解
方法一 双指针
使用两个指针left和right分别指向最终数组的末尾和最终数组不需要的元素的最左侧。当nums[left]等于val,则将nums[right]替换nums[left],并将right减1。循环直到left>right。
时间复杂度:O(n)
空间复杂度:O(1)
public int removeElement(int[] nums, int val) {
int left=0,right=nums.length-1;
while(left<=right){
if(nums[left]==val){
nums[left]=nums[right];
nums[right--]=0;//这个也可以不要,直接将right--放到上面
}else{
left++;
}
}
return left;
}
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~