移除元素
題目
移除元素(力扣:27)
給你一個數組 nums 和一個值 val,你需要 原地 移除所有數值等於 val 的元素,並返回移除後數組的新長度。
不要使用額外的數組空間,你必須僅使用 O(1) 額外空間並 原地 修改輸入數組。
元素的順序可以改變。你不需要考慮數組中超出新長度後面的元素。
分析
該題和“移動零”是一類問題,只不過將0值換爲一個指定值而已。
快速跳轉《移動零(Java的2種算法實現)》。
代碼實現
/**
* 27. 移除元素
* @param nums
* @param val
* @return
*/
public int removeElement(int[] nums, int val) {
if (nums == null){
return -1;
}
int i =0, j=0;
while (i<nums.length){
if (nums[i] != val){
//這裏不需要將i和j進行交換,因爲等於val的值移動後是無用的。
nums[j] = nums[i];
j++;
}
i++;
}
return j;
}