アイデア:デュアルポインターを使用するには、最初に2つのポインターを同期的に移動させます。val!= nums [fastindex]の場合、slowindexとfastindexは同期的に移動します。これにより、val!= numsの場合、「要素の削除」の効果を後でシミュレートできます。 [fastindex] val == nums [fastindex]の場合、fastindexは移動しますが、slowindexは移動しません。val!= nums [fastindex]の場合、同期して移動することにより、2つの間の要素が「削除」されます。
class Solution {
public int removeElement(int[] nums, int val) {
int slowIndex = 0;
for (int fastIndex = 0; fastIndex < nums.length; fastIndex++) {
if (val != nums[fastIndex]) {
//当val!=nums[fastIndex]的时候,slowIndex和fastIndex是同步移动的
nums[slowIndex++] = nums[fastIndex];
}
//当val==nums[fastIndex]的时候,fastIndex移动,但是slowIndex不移动
}
return slowIndex;
}
}