自己解法
這題和刪除排序數(shù)組中重復(fù)的元素類似型雳,都是將后面的元素往前移竞端,所以只要維護(hù)好有效數(shù)組的下標(biāo)就好了铣焊。
class?Solution?{
????public?int?removeElement(int[]?nums,?int?val)?{
????????int?j?=?0;
????????for?(int?i?=?0;?i?<?nums.length;?i++)?{
????????????if?(nums[i]?!=?val)?{
????????????????nums[j]?=?nums[i];
????????????????j++;
????????????}
????????}
????????return?j;
????}
}
官方解法
雙指針解法拢蛋,一個(gè)指針前遍歷楞遏,一個(gè)指針從后遍歷鳍徽,前面指針等于val時(shí)资锰,用后面指針內(nèi)容覆蓋前面指針內(nèi)容,后面指針減一阶祭,重新進(jìn)行判斷绷杜,直到兩者相遇。
public int removeElement(int[] nums, int val) {
? ? int i = 0;
? ? int n = nums.length;
? ? while (i < n) {
? ? ? ? if (nums[i] == val) {
? ? ? ? ? ? nums[i] = nums[n - 1];
? ? ? ? ? ? // reduce array size by one
? ? ? ? ? ? n--;
? ? ? ? } else {
? ? ? ? ? ? i++;
? ? ? ? }
? ? }
? ? return n;
}