<LeetCode天梯>Day007 存在重复元素 | 初级算法 | Python

工作日,又到新的一周了,来,今天和车神哥一起来提升自己的Python编程和面试能力吧,刷天梯~

以下为我的天梯积分规则

每日至少一题:一题积分+10分
若多做了一题,则当日积分+20分(+10+10)
若做了三道以上,则从第三题开始算+20分(如:做了三道题则积分-10+10+20=40;做了四道题则积分–10+10+20+20=60


初始分为100分
若差一天没做题,则扣积分-10分(周六、周日除外注:休息
坚持!!!


初级算法

刷题目录

数组

在这里插入图片描述

题干

给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。

示例1:

输入: [1,2,3,1]
输出: true

示例2:

输入: [1,2,3,4]
输出: false

示例3:

输入: [1,1,1,3,3,4,3,2,4,2]
输出: true


分析:

从题干上看,其实很简单,有相同则返回true,反之,则false

直接上代码:

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        n = len(nums)
        nums.sort()
        for i in range(n-1):
            if nums[i] == nums[i+1]:
                return True
        return False

<LeetCode天梯>Day007 存在重复元素 | 初级算法 | Python_第1张图片
从内存消耗上看,还不错,但是好像大家的代码都差不多。
<LeetCode天梯>Day007 存在重复元素 | 初级算法 | Python_第2张图片
<LeetCode天梯>Day007 存在重复元素 | 初级算法 | Python_第3张图片
怎么可能就写一种,然后我又写了一个较为复杂一点的:

基本思想也差不多,就先将无序数组按照从小到大排序,然后再判断相邻数直接有无相同,若有,则返回true,反之,false.

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        n = len(nums)
        # 先对数组进行排序
        s_n = nums.sort()
        su1 = 0
        su2 = 1
        for i in range(n-1, 0, -1):
            if nums[i] == nums[i-1]:
                su1 += 1
            else:
                su2 += 1
        if su2 != n:
            return True
        else:
            return False

<LeetCode天梯>Day007 存在重复元素 | 初级算法 | Python_第4张图片
<LeetCode天梯>Day007 存在重复元素 | 初级算法 | Python_第5张图片
<LeetCode天梯>Day007 存在重复元素 | 初级算法 | Python_第6张图片
没有上一个好感觉。哈哈哈

但是先排序再比较这种算法,应该算是最快的了,内存消耗等和电脑多少有点关系吧~

Reference

作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x248f5/
来源:力扣(LeetCode)


今日得分:+10
总得分:210

加油!!!

❤坚持读Paper,坚持做笔记,坚持学习,坚持刷力扣LeetCode❤!!!
再加个坚持刷题!!!打天梯!!!
To Be No.1

⚡⚡


创作不易⚡,过路能❤关注收藏点个赞三连就最好不过了

ღ( ´・ᴗ・` )


温柔正确的人总是难以生存,因为这世界既不温柔,也不正确。

你可能感兴趣的:(LeetCode天梯,leetcode,python,算法)