日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

      歡迎訪問 生活随笔!

      生活随笔

      當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

      编程问答

      Matrix Studio LeetCode 刷题指南

      發布時間:2024/5/17 编程问答 54 豆豆
      生活随笔 收集整理的這篇文章主要介紹了 Matrix Studio LeetCode 刷题指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

      Hello 大家好,我是Alex,今天來說明一下Matrix工作室每日一題的刷題指南,雖然刷題一直飽受詬病,很多人不想刷題,但不可否認刷題確實能鍛煉我們的編程能力,相信每個認真刷題的人都會有體會。

      現在提供的在線編程評測平臺有很多,并且也分了兩個方向,一個是偏向于面試找工作,比較著名的就是LeetCode,另一個是偏向于算法競賽,比較著名的有CodeForce,UVA等等,我們經常說的打CF可不是穿越火線,而是CodeForce,這兩個不僅完全沒有關系,并且難度也不是一個層級的。

      咱們今天還是重點說說LeetCode這個平臺,這是一個非常棒的OJ(Online Judge)平臺,收集了許多公司的面試題目,相對其他OJ而言,LeetCode具有很多優點:

      • 題目全部來自業內大廠的真實面試題;
      • 不用處理輸入輸出,精力全放在解決具體問題上;
      • 題目由豐富的題解,可以參考別人的思路;
      • 精確了解自己的代碼在所有提交代碼中運行效率的排名;
      • 支持多種主流語言:C/C++、Python、Java、Js、Go等等。

      廢話不多說,那我們接下來就開始。

      一、賬號

      用LeetCode之前首先你肯定得有一個賬號,可以是QQ或者微信登錄,也可以用GitHub登錄。

      二、每日一題

      其實LeetCode是有每日一題的,比如今天的:

      一般來說,平常工作日都是簡單或者中等難度的題目,大概十幾分鐘就能解決,有些比較麻煩的可能需要幾十分鐘,周末經常會出困難級別的題目,光思路就得想十幾分鐘,實現出來又得十幾分鐘,然后花時間調試和改bug,最后終于AC(Accepted)了,還得去題解學習學習大師級別的代碼,基本上一個多小時過去了。

      當然,咱們工作室的每日一題也會從LeetCode上出,但并不一定是LeetCode上的每日一題,因為考慮到一些大一的同學并沒有學過算法和數據結構,所以各個組長會根據組員的學習進度,先從簡單的題目中找適合你們的題目,布置成作業,等大家逐漸熟練之后,會慢慢的轉為LeetCode上的每日一題,這樣就統一了。

      三、刷題套路

      以今天的每日一題:925. 長按鍵入為例,我們進入問題詳情頁后:

      可以看到左邊是題目描述以及一些輸入輸出樣例,右邊是在線代碼編輯區,我們等會提交代碼就得從這里提交。

      簡單讀一下題目925. 長按鍵入,有的時候題目會比較晦澀難懂,尤其是一些英文翻譯題甚至直接就是英文題目,這個時候也不用慌,有的時候題目沒讀懂也沒關系,我們可以研究研究輸入輸出樣例。

      如果能把輸入輸出樣例搞懂了,那也能把題做對。

      讀懂了題目之后,我們要做三件事:

    1. 解題思路;
    2. 確定算法;
    3. 確定數據結構。
    4. 這題呢比較簡單,所以我們就簡單說一下思路就可以了。

      通過題意可以知道,就是判斷name是否為typed的子序列,我們可以使用雙指針i, j追蹤name和typed的位置,依次判斷當前遍歷的字符是否相等,如果不等的話,判斷是否是長按鍵入多次了,如果不是,那就返回False,到最后,如果i = len(name),說明name的每個字符都被匹配了。

      然后我們就可以開始寫代碼了,之前我們說過,在LeetCode上我們不需要花時間處理輸入和輸出,它在后臺評判的時候已經幫我們做好了,我們只需要實現具體的代碼邏輯。

      以Python3為例:

      class Solution:def isLongPressedName(self, name: str, typed: str) -> bool:

      對于還沒學過類和對象的同學,簡單說一下這是什么,不需要了解具體的意義,知道怎么做就行。

      我們一般不直接在LeetCode的在線編輯器上寫代碼,一點都不舒服,所以我們把它復制到PyCharm,然后寫一個模板:

      class Solution:def isLongPressedName(self, name: str, typed: str) -> bool:passif __name__ == '__main__':s = Solution()print(s.isLongPressedName(name="alex", typed="aaleex"))

      這個模板呢,基本上是通用的,就是在主函數里實例化一個Solution()對象s,然后通過s調用相應的方法isLongPressedName,能運行通之后,我們就可以在isLongPressedName中編寫相應的算法邏輯了。

      class Solution:def isLongPressedName(self, name: str, typed: str) -> bool:i, j = 0, 0while j < len(typed):if i < len(name) and name[i] == typed[j]:i += 1j += 1elif j > 0 and typed[j] == typed[j - 1]:j += 1else:return Falsereturn i == len(name)if __name__ == '__main__':s = Solution()print(s.isLongPressedName(name="alex", typed="aaleex"))print(s.isLongPressedName(name="saeed", typed="ssaaedd"))print(s.isLongPressedName(name="leelee", typed="lleeelee"))

      最后我們把寫完的Solution()類復制回LeetCode的在線編輯器,提交評測,通過了之后,你就可以看到你的代碼在所有提交代碼中運行效率的排名,然后還可以分享你的解題思路。

      那如果我們寫的代碼邏輯有問題,沒有通過評測呢,我們來試一下提交一個錯誤的代碼:

      class Solution:def isLongPressedName(self, name: str, typed: str) -> bool:i, j = 0, 0while j < len(typed):if i < len(name) and name[i] == typed[j]:i += 1j += 1elif j > 0 and typed[j] == typed[j - 1]:i += 1j += 1else:return Falsereturn i == len(name)

      它會給我們顯示解答錯誤,并且呢提供執行錯誤的輸入輸出樣例。

      還有一種錯誤是我們的語法有問題,比如我們少了一個冒號:

      class Solution:def isLongPressedName(self, name: str, typed: str) -> bool:i, j = 0, 0while j < len(typed):if i < len(name) and name[i] == typed[j]:i += 1j += 1elif j > 0 and typed[j] == typed[j - 1]i += 1j += 1else:return Falsereturn i == len(name)

      它給我們顯示執行出錯,可以看一下錯誤詳情:

      它會幫我們標注出來哪里出錯,出了什么錯,還貼心的畫了一條紅線。

      題解

      如果說LeetCode上面的題目是一塊塊金子的話,那么題解就是一個大礦山,多少次當你絞盡腦汁終于AC,準備去題解區吹牛逼的時候,迎接你的是眾多大師級別的代碼,你就只能高呼臥槽,我怎么沒想到,然后閉關去思考那些強悍的代碼是什么邏輯,順便默默鄙視了一眼自己的。

      所以,AC之后并不是就萬事大吉了,還要去觀摩一下題解,學習他們的思路。


      好了,今天的分享就到這,拜拜。

      與50位技術專家面對面20年技術見證,附贈技術全景圖

      總結

      以上是生活随笔為你收集整理的Matrix Studio LeetCode 刷题指南的全部內容,希望文章能夠幫你解決所遇到的問題。

      如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。