专栏首页光城(guangcity)你知道IDE换主题?

你知道IDE换主题?

存在重复元素(17)


今日知图

上下左右移动

h 左
j 下
k 上
l 右

0.说在前面1.存在重复元素2.Pycharm美化3.作者的话


0.说在前面

本节核心:三种方法解决一道算法题,寻找最优方法!根据交流群的留言,在后文放出Pycharm的主题配置!!!一起嗨起来~~~

回顾

昨日研究了很久的知识图谱终于告一段落,后面会有更深入的知识图谱文章推出,根据我个人学习情况,加入机器学习或者深度学习算法,两者结合,绽放火花!

今日

公众号每周二与周五推出leetcode算法文章,刷的网址是:

https://leetcode-cn.com/explore/interview/card/tencent/

如果你也需要刷算法,我跟老表建立了一个专门算法群(可点击公众号右下角->联系我,进入算法交流群!),每周一与周四两天各刷一道,我公众号周二与周五各更新一篇,今天周六,本来昨日发文,由于昨天将我的知识图谱研究发出去,所以暂缓了一天!

爬虫

由于师弟与师妹需要爬虫知乎取数据,所以我估计会抽空研究知乎爬虫,到时候采用scrapy爬虫,scrapy爬虫的小伙伴们一起来期待!!!

下面我们来一起进入本节文章内容!!!

1.存在重复元素

问题

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

如果任何值在数组中出现至少两次,函数返回 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

方法一

思路

set去重

然后获得nums去重后的数组与原始数组长度相比较,如果相等,则没有重复元素,返回false,否则不等,有重复元素,返回true。

实现

return len(nums) != len(set(nums))

分析

时间与空间复杂度均为O(1)

方法二

思路

字典处理

定义一个字典,遍历给定的list(也就是nums),并向字典中添加list元素,通过查找字典中是否存在当前list的元素来判别给定的list是否有重复元素!

实现

实现一:

class Solution:
    def containsDuplicate(self, nums):
        nums_dict = {}
        for i in nums:
            if i in nums_dict:
                return True
            nums_dict[i] = 1
        return False

实现二:

class Solution:
    def containsDuplicate(self, nums):
        nums_dict = {}
        for i in range(len(nums)):
            if nums[i] in nums_dict:
                return True
            nums_dict[nums[i]] = 1
        return False

分析

当前这个方法好好分析一下时间与空间复杂度,这里定义了一个字典,空间复杂度为O(n),时间复杂度为O(n)

关键点:当中涉及了字典查找元素,时间复杂度O(1),外层循环一次,时间复杂度O(n),总共为O(n)

方法三

列表处理

思路

定义一个列表,遍历给定的list(也就是nums)),并向新定义的list中添加nums中的元素,通过查找新定义list中是否存在当前list的元素来判别给定的list是否有重复元素!

实现

class Solution:
    def containsDuplicate(self, nums):
        nums_list = []
        for i in nums:
            if i in nums_list:
                return True
            nums_list.append(i)
        return False

分析

上面这个时间复杂度为O(n^2),空间复杂度为O(n)

空间复杂度好理解,时间复杂度大家看到的只是一个for循环,为何O(n^2)

原因在于里面list查找时间复杂度为O(n),外层还有一个O(n)的训话,自然就为O(n^2)了,所以leetcode通不过,超时~~

总结

上面介绍了三种方法解决这道简单题!特别是后面的两个方法,字典与列表对比分析,从时间复杂度来研究其优劣!

2.Pycharm美化

下载主题 http://color-themes.com/?view=index

上述是一个主题推荐网址,选择自己喜欢的配色,下载后打开 Pycharm 选择File -> 选择 Import Settings -> 选择 xxxx.jar (你下载的jar包)导入,导入完成后,重启PyCharm即可!

更多Pycharm内容,后面一起分享,这次先来换皮肤,哈哈~~~具体需求,请留言!!

本文分享自微信公众号 - 光城(guangcity),作者:lightcity

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 回归Android,继续刷题

    这两天要做个安卓项目,哎,我之前是做安卓开发的,做了半年多,后面就没做了,距离现在至少1年半有余。

    公众号guangcity
  • LeetCode攀登之旅(9)

    点击公众号右下角合作转载->联系我,即可加入我的个人微信,共同探讨交流,以及入交流群(记得备注入群)!

    公众号guangcity
  • 多种解法破中等题

    0.说在前面1.数组中的第K个最大元素1.0 问题1.1 降序方法1.2 递归快排1.3 非递归快排1.4 最大堆排序1.5 最小堆排序2.二叉搜索树中第K小的...

    公众号guangcity
  • 78. 子集

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/subsets 著作权归领扣网络所有。商业转载请联系官方...

    lucifer210
  • Linux下使用acme.sh申请和管理Let’s Encrypt证书

    沈唁
  • Linux 下 acme.sh 申请 Let’s Encrypt 证书失败常见原因分析

    明月发现最近在著名生产环境军哥 LNMP 一键安装包的论坛上看到很多站长们都在反映 LNMP 下使用 acme.sh 申请 Let's Encrypt 证书失败...

    明月云服务
  • 如何用R进行中文分词?

    Hello亲耐的小伙伴们!新一期的大猫课堂又和大家见面了。针对前几期课程,不少童鞋向大猫提出了一些非常好的建议,例如:把需要用到的包明确写出来,中间过程不要省略...

    用户7652506
  • 偶述 Wolfram 中文分词算法

    从 2000 年开始学习和使用 Mathematica,《Mathematica 演示项目笔记》作者,发表Wolfram Demonstrations Proj...

    WolframChina
  • Debugging etcd

    heidsoft
  • IT比试概率数学题

    http://www.cnblogs.com/renyuan/archive/2012/09/24/2699654.html

    bear_fish

扫码关注云+社区

领取腾讯云代金券