如何注册网站的名字,云南网站建设公司排行,专门做游戏交易的网站有哪些,自创网站怎么赚钱对于移除元素这道题来讲,我首先想到的还是双指针#xff0c;根据题目要求我们需要在给定的一组数组中找出与目标值不同的元素数量并且将与目标值不同的元素全部移至数组左边右边则不需关注数组元素的大小#xff0c;我们利用两个指针一个指向数组首部位置#xff08;左指针根据题目要求我们需要在给定的一组数组中找出与目标值不同的元素数量并且将与目标值不同的元素全部移至数组左边右边则不需关注数组元素的大小我们利用两个指针一个指向数组首部位置左指针一个指向末端位置右指针如果首部位置所指元素与目标值相同则将右指针所指元素对左指针所指元素进行覆盖接着右指针向左移动如果不同则左指针向右移动重复上述步骤即可直至左指针越过右指针循环结束我们直接返回左指针下标即可即为与目标值不同的元素数量总和
这种方法比较正式的称呼是相向双指针法
class Solution {public int removeElement(int[] nums, int val) {int left0;int rightnums.length-1;int sum0;while(leftright){if(nums[left]val){nums[left]nums[right];right--;} else{sum;left;} }return sum;}
}
除此之外还有快慢指针法可以解决这个问题
快慢指针法
通过快指针来寻找与目标值不同的元素
通过慢指针来更新数组即可
class Solution {public int removeElement(int[] nums, int val) {int fastIndex0;int slowIndex0;while(fastIndexnums.length-1){if(nums[fastIndex]val){fastIndex;}else{nums[slowIndex]nums[fastIndex];slowIndex;fastIndex;}}return slowIndex;
}
}