27. 移除元素Remove Element

給你一個(gè)數(shù)組 nums和一個(gè)值 val,你需要 原地 移除所有數(shù)值等于 val的元素,并返回移除后數(shù)組的新長度。

不要使用額外的數(shù)組空間,你必須僅使用 O(1) 額外空間并 原地 修改輸入數(shù)組。

元素的順序可以改變。你不需要考慮數(shù)組中超出新長度后面的元素。

示例 1:

輸入:nums = [3,2,2,3], val = 3
輸出:2, nums = [2,2]
解釋:函數(shù)應(yīng)該返回新的長度 2, 并且 nums 中的前兩個(gè)元素均為 2。你不需要考慮數(shù)組中超出新長度后面的元素。例如,函數(shù)返回的新長度為 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也會(huì)被視作正確答案。
示例 2:

輸入:nums = [0,1,2,2,3,0,4,2], val = 2
輸出:5, nums = [0,1,3,0,4]
解釋:函數(shù)應(yīng)該返回新的長度 5, 并且 nums 中的前五個(gè)元素為 0, 1, 3, 0, 4。注意這五個(gè)元素可為任意順序。你不需要考慮數(shù)組中超出新長度后面的元素。

這道題目比較簡單,for循環(huán)遍歷數(shù)組,如果遇到元素等于給定的val,那么使用js的splice方法刪除掉該元素。(splice方法改變數(shù)組本身)此時(shí)因?yàn)閯h除掉了一個(gè)元素,遍歷的index-1,再接著遍歷即可。

/**
 * @param {number[]} nums
 * @param {number} val
 * @return {number}
 */
var removeElement = function(nums, val) {
    for(let i = 0; i< nums.length; i++) {
        if (nums[i] === val) {
            nums.splice(i, 1);
            i--;
        }
    }
    return nums.length;
};

解法2
思路:設(shè)置一個(gè)值res標(biāo)識(shí)新數(shù)組的位置,遍歷數(shù)組的時(shí)候如果遇到不等于val的,把該值插入到數(shù)組的位置,并將res標(biāo)識(shí)的位置+1;

/**
 * @param {number[]} nums
 * @param {number} val
 * @return {number}
 */
var removeElement = function(nums, val) {
    let res = 0;
    for(let i = 0; i < nums.length; i++) {
        if (nums[i] !== val) {
            nums[res++] = nums[i];
        }
    }
    return res;
};

相關(guān)題目:
leetCode 26

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容