C語(yǔ)言——移除元素(雙指針法)
題目:
給你一個(gè)數(shù)組 nums 和一個(gè)值 val,你需要 原地 移除所有數(shù)值等于 val 的元素,并返回移除后數(shù)組的新長(zhǎng)度。
不要使用額外的數(shù)組空間,你必須僅使用 O(1) 額外空間并 原地 修改輸入數(shù)組。
元素的順序可以改變。你不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。
說明:
為什么返回?cái)?shù)值是整數(shù),但輸出的答案是數(shù)組呢?
請(qǐng)注意,輸入數(shù)組是以「引用」方式傳遞的,這意味著在函數(shù)里修改輸入數(shù)組對(duì)于調(diào)用者是可見的。
解題思路:雙指針法,一個(gè)拿來遍歷數(shù)組,一個(gè)拿來存儲(chǔ)目標(biāo)期望數(shù)組。時(shí)間復(fù)雜度O(n)
代碼:
int?removeElement(int*?nums,?int?numsSize,?int?val){
????int?p=0,q=0;
????if(numsSize==0)
????return?0;
????while(p<numsSize)
????{
????????if(nums[p]!=val)
????????{
????????????nums[q]=nums[p];
????????????++q;
????????}
????????++p;
????}
????return?q;
}
標(biāo)簽:
C語(yǔ)言——移除元素(雙指針法)的評(píng)論 (共 條)
