天天看点

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

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

以下为我的天梯积分规则:

每日至少一题:一题积分+10分

若多做了一题,则当日积分+20分(+10+10)

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

初始分为100分

若差一天没做题,则扣积分-10分(周六、周日除外注:休息)

坚持!!!

初级算法

刷题目录

数组

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

题干

给定一个整数数组,判断是否存在重复元素。

如果存在一值在数组中出现至少两次,函数返回 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,反之,则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

从内存消耗上看,还不错,但是好像大家的代码都差不多。

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

怎么可能就写一种,然后我又写了一个较为复杂一点的:

基本思想也差不多,就先将无序数组按照从小到大排序,然后再判断相邻数直接有无相同,若有,则返回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
<LeetCode天梯>Day007 存在重复元素 | 初级算法 | Python
<LeetCode天梯>Day007 存在重复元素 | 初级算法 | Python