你知道IDE換主題?
- 2019 年 10 月 5 日
- 筆記

存在重複元素(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內容,後面一起分享,這次先來換皮膚,哈哈~~~具體需求,請留言!!