小李飞刀:用python刷题ing....

栏目: Python · 发布时间: 5年前

内容简介:默认每天都要刷两道题。今天目标已完成。26. 删除排序数组中的重复项

叨逼叨

默认每天都要刷两道题。

今天目标已完成。

第一题

26. 删除 排序 数组中的重复项

难度:简单

类型:数组

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

这题其实我之前做过,但是一直提交失败。

经过昨天的那题数组题,我换了一种for in方式。

之前我采用的是下标来定位,用 pop 来删除重复项。

这次采用了数组内的每一项来单独做对比,用 remove 来进行删除操作。

class Solution(object):
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        length = len(nums)
        if length > 1: \\这个判定很重要
            point = nums[0]
            for i in nums[1:]:
                if point != i:
                    point = i
                else:
                    nums.remove(i)
        print(len(nums))

其中的 if length > 1 是后面进行修改的,是必须的判定。

因为可能存在空数组的情况,那么length = 0,不需要删除任何项目。

而当只有一个数组的时候,length = 1,同样不需要删除任何项目。

看了下用时,800ms属于中间位置。

小李飞刀:用 <a href='https://www.codercto.com/topics/20097.html'>python</a> 刷题ing....

看了下44ms的范例,采用的是下标标记,用了反向的思路。

小李飞刀:用python刷题ing....

因为是有序数组,采用了快慢两种指针,当存在不一致的时候,可以进行覆盖,达到删除的目的。

第二题

80. 删除排序数组中的重复项 II

难度:中等

类型:数组

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。

和第一题十分相似,但是多了条件,就是数值可以出现两次,这就需要额外的进行计数。

class Solution:
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if len(nums) < 1:
            return 0
        point = nums[0]
        count = 0 
        for i in nums[1:]:
            if point != i:
                point = i
                count = 0
            else:
                count = count + 1
                if count == 2:
                    nums.remove(i)
                    count = 1
        return len(nums)

我的思路都是比较粗暴的办法,就是用变量记录当前的对比值,当对比值出现超出2次时候,就进行remove,和第一题比较接近的思路,方法也大致相同。

小李飞刀:用python刷题ing....

这题的用时会更少一点,但是也是中间位置。

小李飞刀:用python刷题ing....

总结

这两天做的题目都比较相似,而且难度较低,都是数组的题目。

套路比较相似,对python3的删除操作和遍历也有了更深的认识与实践。

后续要开始做更多其他数据结构的题目,不断尝试。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

领域驱动设计

领域驱动设计

[美] Eric Evans / 赵俐、盛海艳、刘霞 / 人民邮电出版社 / 2016-6-1 / 69

本书是领域驱动设计方面的经典之作,修订版更是对之前出版的中文版进行了全面的修订和完善。 全书围绕着设计和开发实践,结合若干真实的项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。书中给出了领域驱动设计的系统化方法,并将人们普遍接受的一些实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计新实践、已验证过的技术以及便于应对复杂领域的软件项目开发的基本原则。一起来看看 《领域驱动设计》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换