基础算法(Leetcode)刻意练习第二天——删除排序数组中的重复元素

思路一:题干中说是排序数组,即只需要向前或者向后比较,如果相同,则删除一个元素。如果使用向后比较就无须特殊处理了(为了处理末端问题,给末尾加了一个标记位)
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if len(nums)<2:return len(nums)
nums.append(’#’)
i=1
while nums[i]!=’#’:
if nums[i]==nums[i-1]:
nums.remove(nums[i])
i=i-1
i=i+1
return len(nums)-1
运行超长,纯属娱乐
思路二:类似双指针,一个指针指向不重复的元素,另一个指向可以放的位置(也许和别人的双指针不太一样?纯原创)
代码如下:
`class Solution:
def removeDuplicates(self, nums: List[int]) -> int:

    if len(nums)<2:return len(nums)
    sign=0
    j=0
    for i in range(1,len(nums)):
        if nums[j]==nums[i]:
            sign=sign+1
            continue
        else:
            nums[j+1]=nums[i]
            j=j+1
    return len(nums)-sign`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值