刪除線性表中指定數(shù)據(jù)-使用數(shù)組實(shí)現(xiàn)

tag 線性表 數(shù)組 刪除指定數(shù)據(jù)

思想

  1. 假設(shè):val為指定值
  2. 使first和second首先指向第一個(gè)元素
    1. 如果second != val,那么first和second同時(shí)前進(jìn),并且會(huì)進(jìn)行賦值
    2. 如果second == val,那么second前進(jìn),而first則進(jìn)行等待,直到找到一個(gè)second != val的位置再次執(zhí)行1
    3. 重復(fù)1-2,直到second達(dá)到末尾
    4. first指向的位置就是刪除指定元素之后的數(shù)組

代碼

  public int removeElement(int[] nums, int val) {
        if(nums == null || nums.length == 0)
        return 0;
       int j = 0;
       //跳過(guò)相等的部分,不等的部分賦值
       for(int i = 0; i < nums.length;i++){
           if(nums[i] != val){
               nums[j] = nums[i];
               j++;
           }
       }
       return j;
    }

總結(jié)

  1. 特別注意的一點(diǎn)是nums[j] = nums[i];的賦值位置,這個(gè)for改成while可能更好理解
  2. 總體思想是跳過(guò)指定元素,和刪除線性表中的重復(fù)數(shù)據(jù)-使用單鏈表實(shí)現(xiàn)的總體思想是一樣的
  3. 注意一點(diǎn)和刪除線性表中的重復(fù)數(shù)據(jù)-使用單鏈表實(shí)現(xiàn)的區(qū)別
    1. 為什么刪除重復(fù)數(shù)據(jù)first和second指向的不是同一個(gè)位置?
      因?yàn)樾枰容^,而刪除指定數(shù)據(jù)是不需要再?gòu)臄?shù)組中拿出一個(gè)數(shù)據(jù)進(jìn)行比較的
    2. 在刪除指定數(shù)據(jù)和刪除重復(fù)數(shù)據(jù)中first起什么作用?
      在刪除重復(fù)數(shù)據(jù)中,first不僅擔(dān)任著要記錄需要返回的不重復(fù)數(shù)據(jù)的個(gè)數(shù),而且還擔(dān)任著比較的任務(wù);但是在刪除指定數(shù)據(jù)中,first純粹只是個(gè)記錄變量,只要second不等于val,就要被強(qiáng)制賦值
最后編輯于
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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