標籤:

挑戰自己|LeetCode 刷題開胃菜

這是菜鳥學Python的第74篇原創文章

閱讀本文大概需要5分鐘

我一個同事是演算法大牛精通多門語言,編程狂人,一個MBP電腦幾乎不離身。他主要刷兩個網站的題,其中之一就是大名鼎鼎的LeetCode,他的記錄很牛,這個網站我以前刷過,但是沒有系統的刷過,受他的影響,於是我這幾天手癢,空了先刷了幾道,跟大家先分享一小部分,每一道題我都用2種以上的解法,我準備用一段時間,來完整的刷一下,並全部記錄下來,看看我能到第幾層~~

1.Remove Element

4 種解法

在一個數組裡面移除指定的value,並返回新的數組的長度

Given an array and a value ,remove all instances of that value in place,and return the new length

兩種解法:

  1. 利用集合set(),巧妙的差補一下

  2. 利用一個循環去判斷一下,個人覺得不優美

  3. 我們用優美的推導列表生成一下,看一下func3()

4.有沒有其他解法呢,有我們有高階函數filter()

2.Remove Duplicates from Array (指定某個元素)

Given a array,remove the duplicates in place such that each element appear only once and return the new length

Do not allocate extra space for another array ,you must do this in place with constant memory

在一個排好序的數組裡面刪除重複的指定的元素

2種解法

3.Remove Duplicates from Sorted Array II

跟上面的題類似,但是不知道列表裡面有多少個重複的元素

4種解法

思考題:

這道題還有2種解法,歡迎有興趣的同學,大家留言交流

4.Remove Duplcateds from Array III

跟上一題類似,同樣是移除重複的元素,但是加深了難度,可以允許最多兩次重複的元素存在

多種變換解法

解法一:不浪費內存,只用原始的列表

這種方法好處在於:就是不需要額外申請一個新的存儲空間,但是切記pop的時候要倒過來pop,從列表的後面往前

解法二:浪費一些內存,多用一個set()

解法三:保持原來的順序,最後用yield

上面幾種解法都是不錯的,但是列表的順序變了,有沒有什麼巧妙的方法可以不改變順序呢,有的,用yield

發現yield還蠻管用的~~

刷題特別是刷LeetCode有趣也很有挑戰,這只是開始,有興趣的同學可以試試,是不是覺得蠻好玩的,今天的文章希望能給初學者一些啟發,若有什麼不懂的,也可以留言跟我探討交流.

歡迎大家關注微信公眾號 【菜鳥學Python】,更多好玩有趣的Python原創教程,趣味演算法,經驗技巧,行業動態,盡在菜鳥學Python,一起來學python吧

歷史人氣文章

Python語言如何入門

用Python寫個彈球的遊戲

Python寫個迷你聊天機器人|生成器的高級用法

用Python破解微軟面試題|24點遊戲

一道Google的演算法題 |Python巧妙破解

推薦閱讀:

Python 家族有多龐大
Python數據分析及可視化實例之CentOS7.2+Python3x+Flask部署標準化配置流程
Flask 實現小說網站 (二)
Python實現3D建模工具
Flask模板引擎:Jinja2語法介紹

TAG:Python |