數(shù)組:啥?要移除我的元素
Python實戰(zhàn)社群
Java實戰(zhàn)社群
長按識別下方二維碼,按需求添加
掃碼關(guān)注添加客服
進Python社群▲
掃碼關(guān)注添加客服
進Java社群▲
題目描述
暴力解法

做題思路
該題目也算是簡單題目,適合新手來做,然后大家也不要看不起暴力解法,我們可以先寫出暴力解法,然后再思考其他方法,這對于我們的編碼能力有很大的幫助。我們來解析一下這個題目的做題思路,他的含義就是讓我們刪除掉數(shù)組中的元素,然后將數(shù)組后面的元素跟上來。最后返回刪除掉元素的數(shù)組長度即可。比如數(shù)組長度為10,里面有2個目標值,我們最后返回的長度
為8,但是返回的8個元素,需要排在數(shù)組的最前面。那么暴力解法的話則就需要兩個for循環(huán),一個用來找到刪除,另一個用來更新數(shù)組。
總體思路就是這樣的,后面的會不斷往前覆蓋。暴力解法也是不超時的,實現(xiàn)也不算太簡單主要需要注意兩個地方。
(1)需要先定義變量len獲取數(shù)組長度,因為后面我們的返回的數(shù)組長度是改變的,所以不可以用nums.length作為上界
(2)我們每找到一個需要刪除的值的時候,需要i--,防止出現(xiàn)多個需要刪除的值在一起的情況,然后漏刪。
題目代碼
代碼也比較簡單
class?Solution?{
????public?int?removeElement(int[]?nums,?int?val)?{
????????//特殊情況需要注意
????????if(nums.length?==?0){
????????????return?0;
????????}
????????//獲取數(shù)組長度,作為for循環(huán)的上界
????????int?len?=?nums.length;
????????for(int?i?=?0;?i?????????????//找到需要刪除的元素
????????????if(nums[i]==val){?
???????????????//覆蓋需要刪除的元素???????????????
????????????????for(int?j?=?i+1?;?j?????????????????????nums[j-1]?=?nums[j];
????????????????}
????????????????//保留當前索引,防止漏刪
????????????????i--;
????????????????//縮小需要返回的長度
????????????????len--;????????????????
????????????}
????????}
????????return?len;
????}
}
快慢指針

做題思路
快慢指針的做法比較有趣,只需要一個for循環(huán)即可解決,時間復雜度為O(n),總體思路就是有兩個指針,前面一個后面一個,前面的用于搜索需要刪除的值,當遇到需要刪除的值時,前指針直接跳過,后面的指針不動,當遇到正常值時,兩個指針都進行移動,并修改慢指針的值。最后只需輸出慢指針的索引即可。
題目代碼
代碼也比較簡單大家可以參考一下
class?Solution?{
????public?int?removeElement(int[]?nums,?int?val)?{
????//特殊情況
??????if(nums==null){
??????????return?0;
??????}?????
??????int?j?=?0;//慢指針,i代表快指針
??????for(int?i?=?0;i?????????//正常情況直接賦值給i??????????
??????????if(nums[i]!=val){
??????????????nums[j]=nums[i];
??????????????j++;
??????????}
??????????//如果為需要刪除的值時,則快指針移動,慢指針不動。
??????}
???????return?j;
????}
}
總結(jié)
總的來說這個題目還算不錯,算是打開了雙指針的大門,后面還會有很多雙指針的題目,大家快加我好友我拉你進群,咱們一起刷題吧。
掃描二維碼
加我好友一起群內(nèi)打卡
程序員愛做飯
作者:LeetCode 鏈接:https://leetcode-cn.com/problems/rotate-array/solution/xuan-zhuan-shu-zu-by-leetcode/ 來源:力扣(LeetCode) 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。


近期精彩內(nèi)容推薦:??


