LeetCode015:除自身以外数组的乘积
一、写在前面
LeetCode 第十四题 除自身以外数组的乘积 传输门:
今天给大家分享的是LeetCode 数组与字符串 第十五题: 存在重复元素,为面试而生,期待你的加入。
二、今日题目
给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 true。
如果数组中每个元素都不相同,则返回 false。
示例:
输入: [1,2,3,1]
输出: true
输入: [1,2,3,4]
输出: false
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true
三、 分析
这个题目,有点简单,根据题目可以得出很清晰的思路,一个列表,所有元素,有没有两个一样的元素,有就返回True,没有就返回False,我第一个脑子就是:把list转换成set,学过Python基础或者看过我总结的Python小知识的读者都知道,set集合是没有重复元素的列表,这样就简单了,直接比较set和list长度就好了,长度一样,说明没有重复元素,否者有,思路如下:
快夸我字好看~
四、解题
1. 第一眼想到的:
表面上看,时间复杂度:O(1)
空间复杂度,多用了一个set:O(n)
(1)代码
# 第一眼想到的
class Solution(object):
def containsDuplicate(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
# 转换为集合(set)
set_test = set(nums)
# 比较集合与原列表长度
if len(set_test) == len(nums):
return False
return True
(2)提交结果
提交结果
测试数据:18组
运行时间:36ms
击败人百分比:87.52%
2.使用collection的Counter类
表面上看,好像也是,时间复杂度:O(1)
空间复杂度,多用了一个dict:O(n)
(1)代码
# 使用collection的Counter类
class Solution1(object):
def containsDuplicate(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
if nums == []:
return False
from collections import Counter
# 计数,Counter函数返回值为字典
# key : vaule = 列表元素 : 出现次数
con = Counter(nums)
if max(con.values()) > 1:
return True
return False
(2)提交结果
不理想
测试数据:18组
运行时间:56ms
击败人百分比:18.52%
3.自己动手
时间复杂度:O(n)
空间复杂度:O(1)
(1)代码
# 老实本分
class Solution2(object):
def containsDuplicate(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
if nums == []:
return False
# 1.遍历列表
for i in nums:
# 2.移除当前遍历元素
nums.remove(i)
# 3.判断还有没有该元素在list中
if i in nums:
return True
return False
(2)运行结果
胎死腹中
五、疑惑
像这种简单题目,就要多想几种方法,把学到的都用上,巩固知识,这样才能学到更多东西,而不是,好简单啊,打会游戏去吧!
推荐极客时间一门算法学习课程,我利用平时吃饭时间现在学习到20讲了,视频课程,学起来更加容易,需要的同学现在扫码购买优惠30元,明天就恢复原价了。
为自己投资
思想很复杂,
实现很有趣,
只要不放弃,
终有成名日。
---《老表打油诗》
六、结语
加我微信:zs820553471,备注:leetcode,加入专门的leetcode刷题交流群。
坚持 and 努力 : 终有所获。
坚持和努力:终有所获。
往期精彩
进学习交流群
不失联,扫码加X先生微信学习交流
温馨提示
欢迎大家转载,转发,留言,点赞请立即获取iTunes X先生。
文末广告点一下也是对X先生莫大的支持。
做知识的传播者,随手转发。
转发支持一下,感谢