Remove Element
題目描述
移除元素
給定一個數組 nums 和一個值 val,你需要原地移除所有數值等于 val 的元素,傳回移除後數組的新長度。
不要使用額外的數組空間,你必須在原地修改輸入數組并在使用 O(1) 額外空間的條件下完成。
元素的順序可以改變。你不需要考慮數組中超出新長度後面的元素。
示例 :
給定 nums = [0,1,2,2,3,0,4,2], val = 2,
函數應該傳回新的長度 5, 并且 nums 中的前五個元素為 0, 1, 3, 0, 4。
注意這五個元素可為任意順序。
你不需要考慮數組中超出新長度後面的元素。
解決方案
考慮傳回值坐标左邊的為已經判定沒有目标元素的,右邊可能有目标元素待判斷的。Java實作:
class Solution {
public int removeElement(int[] nums, int val) {
int ret=0;
for(int i=0;i<nums.length;i++){
if(nums[i]!=val){
nums[ret]=nums[i];
ret++;
}
}
return
Move Zeroes
題目描述
移動零
給定一個數組 nums, 編寫一個函數将所有 0 移動到它的末尾,同時保持非零元素的相對順序。
解決方案
class Solution {
public void moveZeroes(int[] nums) {
int ret=0;
for(int i=0;i<nums.length;i++){
if(nums[i]!=0){
nums[ret]=nums[i];
ret++;
}
}
for(;ret<nums.length;ret++){
nums[ret]=0;
}
}
}