Java leetcode-27 陣列移除元素
阿新 • • 發佈:2021-01-21
題目要求:給你一個數組 nums 和一個值 val,你需要 原地 移除所有數值等於 val 的元素,並返回移除後陣列的新長度。不要使用額外的陣列空間,你必須僅使用 O(1) 額外空間並原地修改輸入陣列。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/remove-element
給定 nums = [0,1,2,2,3,0,4,2], val = 2,
函式應該返回新的長度 5, 並且 nums 中的前五個元素為 0, 1, 3, 0, 4
。注意這五個元素可為任意順序
思路:這道題比較尷尬的是,我們不能額外建立陣列,只能在原來陣列上操作
public int removeElement(int[] nums, int val) {
if(nums == null || nums.length ==0){
return 0;
}
int j = 0; //用來表示移除元素後的陣列長度
int i = 0;
while(i < nums.length){
if(nums[i] != val){
//遇到和val不相等的元素,將其賦值,陣列下標用j表示
nums[ j] = nums[i];
j++;
}
i++; //陣列向後遍歷
}
return j;
}