久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

Python|“雙指針法”解刪除數組重復項問題

Python算法題目中,掌握一定的方法和技巧或者說是了解基礎解題規律,能夠在解決更多復雜問題的過程中思路更清晰,算法更簡單易懂。接下來用一個leetcode題目“原地刪除排序數組重復項”的案例來介紹一下“雙指針法”的具體應用。

題目描述:

給定一個排序數組,需要在原地刪除重復出現的元素,使得每個元素只出現一次,返回移除后新的數組。

輸入:[1,1,2]

輸出:[1,2]

解決方案:

1.首先需要引入兩個指針i,k;

2.指針i先用于遍歷數組,由于要刪除相同數字,需要判斷是否與上一個數字相同,當遇到nums[i] != ums[i-1]時,說明已遇到新的不同數字,此時,將該數字記錄;

3.指針k有兩個不同的作用。

一是用來統計這個數組中不同數字的數量,即每當遇到新的數字時,就執行k +=1 ;

二是為了記錄這個新的數字,將指針i遍歷而遇到的新的數字的索引賦值給k,即nums[k] = nums[i]。

4.最終得到的k就是返回值。

代碼示例:

class Solution:

def removeDuplicates(self, nums: [int]) -> int:

if len(nums) == 0: return 0

k = 1

for i in range(1, len(nums)):

if nums[i] != nums[i - 1]:

nums[k] = nums[i]

k += 1

return k

結語

通過這道題目,可以了解到在解決原地刪除問題時,遇到這種有序依次排列的數組,用遍歷來做十分方便,而遍歷數組,就聯想到可以用雙指針法來解決。兩個指針,一個用來遍歷判斷,一個用來記錄數據,十分容易就能得到結果。

版權聲明:轉載文章來自公開網絡,版權歸作者本人所有,推送文章除非無法確認,我們都會注明作者和來源。如果出處有誤或侵犯到原作者權益,請與我們聯系刪除或授權事宜。

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

  • <menu id="dlktz"></menu>
    <ul id="dlktz"></ul>
    <menu id="dlktz"></menu>
    <bdo id="dlktz"></bdo>
    主站蜘蛛池模板: 临泽县| 邳州市| 普兰县| 习水县| 枣强县| 霍州市| 彭州市| 象山县| 山东省| 义马市| 康定县| 蕲春县| 竹山县| 奉新县| 绥滨县| 黔西| 蓝山县| 南京市| 平山县| 广汉市| 晋州市| 望城县| 高台县| 闵行区| 保靖县| 八宿县| 大厂| 洛宁县| 安宁市| 兰坪| 延庆县| 陵水| 吉木乃县| 乌审旗| 仙游县| 宜兰县| 黔江区| 耿马| 高淳县| 许昌市| 南充市|