LeetCode-027-移除元素

題目描述:給你一個(gè)數(shù)組 nums 和一個(gè)值 val,你需要 原地 移除所有數(shù)值等于 val 的元素,并返回移除后數(shù)組的新長(zhǎng)度。
不要使用額外的數(shù)組空間,你必須僅使用 O(1) 額外空間并 原地 修改輸入數(shù)組。
來(lái)源:力扣(LeetCode) ??
鏈接:https://leetcode-cn.com/problems/remove-element/ ??
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
解法一:交換位置
首先,如果數(shù)組為空或者數(shù)組的長(zhǎng)度為0,直接返回0;
然后,如果數(shù)組不為空,遍歷數(shù)組,count記錄和val值不相同的數(shù)目(也就是最后的返回值),index表示從0開(kāi)始遍歷,reverseCount表示交換數(shù)字的次數(shù),具體遍歷過(guò)程如下:
當(dāng)index對(duì)應(yīng)的值不等于val時(shí),count加1,并且index加1也就是往后移一位;
當(dāng)index對(duì)應(yīng)的值等于val時(shí),判斷index是否后面可遍歷的位數(shù),如果是,則將index和可遍歷的最后一位交換數(shù)字,并且reverseCount+1,然后繼續(xù)遍歷;如果不是,則沒(méi)有可交換的位置,即已經(jīng)遍歷完成。返回count值。
【每日寄語(yǔ)】 昨天是歷史,明天是謎團(tuán),只有今天是天賜的禮物。