<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          數(shù)組:啥?要移除我的元素

          共 553字,需瀏覽 2分鐘

           ·

          2021-01-28 18:18


          Python實戰(zhàn)社群

          Java實戰(zhàn)社群

          長按識別下方二維碼,按需求添加

          掃碼關(guān)注添加客服

          進Python社群▲

          掃碼關(guān)注添加客服

          進Java社群


          作者丨tan45du
          來源丨袁廚的算法小屋

          題目描述

          題目

          暴力解法

          暴力題解

          做題思路

          該題目也算是簡單題目,適合新手來做,然后大家也不要看不起暴力解法,我們可以先寫出暴力解法,然后再思考其他方法,這對于我們的編碼能力有很大的幫助。我們來解析一下這個題目的做題思路,他的含義就是讓我們刪除掉數(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)載請注明出處。

          程序員專欄
          ?掃碼關(guān)注填加客服?
          長按識別下方二維碼進群

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

          ?再見,戴威!再見,小黃車!

          ?別瞎學了,這幾門語言要被淘汰了!

          ?再見 Win10!下一代操作系統(tǒng)來了。。

          ?墻裂建議收藏,100道Python練手題目




          在看點這里好文分享給更多人↓↓

          瀏覽 28
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  操逼。 | 成人无码久久久久毛片 | 久久国产主播 | 九九东京热| 亚洲成人在线免费观看 |