【一天一道Leetcode】刪除有序數(shù)組的重復項

本篇推文共計2000個字,閱讀時間約3分鐘。
01
題目描述

題目描述:
給你一個有序數(shù)組nums,請原地刪除重復出現(xiàn)的元素,使每個元素只出現(xiàn)一次,返回刪除后數(shù)組的新長度。
不要使用額外的數(shù)組空間,你必須在原地修改輸入數(shù)組并在使用O(1)額外空間的條件下完成。
示例:
輸入:nums = [1,1,2]
輸出:2, nums = [1,2]
解釋:函數(shù)應該返回新的長度 2 ,
并且原數(shù)組 nums 的前兩個元素被修改為 1, 2 。
不需要考慮數(shù)組中超出新長度后面的元素。提示:
1.0 <= nums.length <= 3*10^4
2.-10^4 <= nums[i] <= 10^4
3.nums 已按升序排列
02
思路和方法
由題意最后只用輸出新數(shù)組的長度。
我們可以利用遍歷從數(shù)組第一個元素進行遍歷,依次對比元素是否相同,將不同的元素往前移動。
最后輸出數(shù)組元素不同的那部分長度即可。
例如我們用一個例子來直觀地說明。
初始數(shù)組:
num=[1,1,2,2,3,3]
設定兩個起點進行遍歷:
node=0,i=1,
num[node]=1,num[i]=1,
如果num[node]!=num[i]
通過node++,使得node++的值等于此時i的值。
使得num[node]=num[i]
利用這樣的方式,將同一個數(shù)組的不同元素都往前移動。
我們用代碼表示為:
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
node = 0
for i in range(1, len(nums)):
if nums[i] != nums[node]:
node += 1
nums[node] = nums[i]
return node + 1
【年終總結】你好2021,再見2020。

【秋招紀實錄】一篇特別正經的【騰訊】求職經驗分享

【一天一道Leetcode】旋轉鏈表
你與世界
只差一個
公眾號
評論
圖片
表情

