算法】刪除排序數(shù)組中的重復項,"> 算法】刪除排序數(shù)組中的重復項。">

国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【求知=>算法】刪除排序數(shù)組中的重復項

2021-12-26 00:55 作者:雨夜的博客  | 我要投稿


    刪除排序數(shù)組中的重復項

    給你一個有序數(shù)組?nums?,請你?原地?刪除重復出現(xiàn)的元素,使每個元素 只出現(xiàn)一次?,返回刪除后數(shù)組的新長度。 不要使用額外的數(shù)組空間,你必須在?原地?修改輸入數(shù)組?并在使用 O(1) 額外空間的條件下完成。

    說明:

    為什么返回數(shù)值是整數(shù),但輸出的答案是數(shù)組呢? 請注意,輸入數(shù)組是以「引用」方式傳遞的,這意味著在函數(shù)里修改輸入數(shù)組對于調(diào)用者是可見的。

    你可以想象內(nèi)部操作如下:


示例 1:

輸入:nums?=?[1,1,2]

輸出:2,?nums?=?[1,2]

解釋:函數(shù)應該返回新的長度?2?,并且原數(shù)組?nums?的前兩個元素被修改為?1,?2?。不需要考慮數(shù)組中超出新長度后面的元素

示例 2:

輸入:nums?=?[0,0,1,1,1,2,2,3,3,4]

輸出:5,?nums?=?[0,1,2,3,4]

解釋:函數(shù)應該返回新的長度?5?,?并且原數(shù)組?nums?的前五個元素被修改為?0,?1,?2,?3,?4?。不需要考慮數(shù)組中超出新長度后面的元素???提示:

  • 0?<=?nums.length?<=?3?*?104

  • -104?<=?nums[i]?<=?104

  • nums?已按升序排列

解題思路

雙指針思路: 設置兩個值,分別代表兩個指針 一個左指針,一個右指針?


    1. 使用right指針遍歷整個數(shù)組

    2. 如果right對應的值比左指針的大,則left +1 ,且把右指針的值賦予當前左指針所指,right++

    3. 如果右指針和左指針相同,則不做操作,right++

    4. 最后返回左指針+1,因為都是從0 開始的。

    擴展解題:

    • 交換數(shù)組的思路:

    • 定義一個空的數(shù)組

    • 循環(huán)便利數(shù)組、判斷循環(huán)的子集不再新的數(shù)組中,將新的子集添加到新的數(shù)組中,反正pass,然后返回新的數(shù)組



  • Set函數(shù)思路:

  • 創(chuàng)建一個無序不重復元素集,可進行關系測試,刪除重復數(shù)據(jù)



  • 統(tǒng)計字符串出現(xiàn)的次數(shù),刪除重復的思路:

  • 定義新的數(shù)組

  • 循環(huán)數(shù)組

  • 統(tǒng)計字符串里某個字符串出現(xiàn)的次數(shù)

  • 設定刪除的次數(shù),比出現(xiàn)的總次數(shù)少一個

  • 比如出現(xiàn)3次,循環(huán)刪除times-1次的i,返回數(shù)組



【求知=>算法】刪除排序數(shù)組中的重復項的評論 (共 條)

分享到微博請遵守國家法律
中卫市| 晴隆县| 昭苏县| 桓台县| 泰宁县| 精河县| 加查县| 东宁县| 曲阜市| 萨嘎县| 金平| 克拉玛依市| 浏阳市| 西安市| 大方县| 佛山市| 稻城县| 布拖县| 噶尔县| 田阳县| 醴陵市| 包头市| 安新县| 张掖市| 雷山县| 广平县| 札达县| 麻阳| 武冈市| 社旗县| 城口县| 库伦旗| 三门峡市| 高台县| 卢湾区| 潢川县| 弋阳县| 益阳市| 简阳市| 陇西县| 清水县|