摘要:描述給定一個有序數組,你需要原地刪除其中的重復內容,使每個元素只出現一次并返回新的長度。最后慢指針指向的元素及前面所有元素都是不重復的。
描述:
給定一個有序數組,你需要原地刪除其中的重復內容,使每個元素只出現一次,并返回新的長度。
不要另外定義一個數組,您必須通過用 O(1) 額外內存原地修改輸入的數組來做到這一點。
示例:
給定數組: nums = [1,1,2], 你的函數應該返回新長度 2, 并且原數組nums的前兩個元素必須是1和2 不需要理會新的數組長度后面的元素實現
重復的需要去掉,無非就是遍歷數組,發現重復,就把后面的往前移,把重復值覆蓋掉。具體說,可以維護2個指針,慢指針開始指向數組第一個元素,快指針指向第二個元素,然后快指針不斷判斷自己當前元素和前一個元素是否相同,相同則快指針后移,不相同則將當前值賦值給慢指針的后一個元素,慢指針后移。最后慢指針指向的元素及前面所有元素都是不重復的。具體過程參考如下代碼和注釋:
class Solution(object): def removeDuplicates(self, nums): """ :type nums: List[int] :rtype: int """ if len(nums) <= 1: return len(nums) s = 0 for f in range(1, len(nums)): if nums[s] != nums[f]: s += 1 nums[s] = nums[f] return s + 1
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41492.html
給定一個排序數組,你需要在原地刪除重復出現的元素,使得每個元素只出現一次,返回移除后數組的新長度。 不要使用額外的數組空間,你必須在原地修改輸入數組并在使用 O(1) 額外空間的條件下完成。 Given a sorted array nums, remove the duplicates in-place such that each element appear only once and re...
給定一個排序數組,你需要在原地刪除重復出現的元素,使得每個元素只出現一次,返回移除后數組的新長度。 不要使用額外的數組空間,你必須在原地修改輸入數組并在使用 O(1) 額外空間的條件下完成。 Given a sorted array nums, remove the duplicates in-place such that each element appear only once and re...
摘要:每個線性表上的數據最多只有前和后兩個方向。數組鏈表隊列棧等就是線性表結構。非線性表數據之間并不是簡單的前后關系。不包含任何元素的棧稱為空棧。移除棧頂的元素,同時返回被移除的元素。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 前言 基礎知識就像是一座大樓的地基,它決定了我們的技術高度。 我們應該多掌握一些可移值的...
閱讀 1830·2021-11-11 16:55
閱讀 749·2019-08-30 15:53
閱讀 3588·2019-08-30 15:45
閱讀 671·2019-08-30 14:10
閱讀 3262·2019-08-30 12:46
閱讀 2123·2019-08-29 13:15
閱讀 2026·2019-08-26 13:48
閱讀 934·2019-08-26 12:23