[Lidemy 學習筆記]-先別急著寫 leetcode Unit1//教練,我想要寫Code

--

Photo by TJ Dragotta on Unsplash
目錄
1.寫在之前
2.前情提要
3.Unit1重點分享
4.接下來就是實戰練習們
4.1印出1–100的奇數
4.2fizzbuzz
4.2.1fizzbuzz(解法一)
4.2.2fizzbuzz(解法二)
4.2.3解法一的pseudo code
4.2.4解法二的pseudo code
5.參考資料

寫在之前

前情提要

接續著上一篇,這是學習Unit1 的筆記摘要,終於可以開始寫了太期待了!

(但明明標題就叫你不要急了…),繼續訓練著解題思維的腦袋。

我該怎麼想,我該怎麼寫,我該怎麼解

Unit1重點分享

  1. 世界上有兩種人: 用想的就解的開、光想就想不出來怎麼解(先想一下自己是哪一種人)
  2. 第一種人"用想的就解的開",可以再細分成三個等級:
  • 已經想到了,但寫不出來
  • 解開了但很慢
  • 解開效率很好

3. 第二種人呢~其實跟第一種人第一個等級挺像的,(一個是想到了寫不出來,一個是想不出來也寫不出來)

4. 遇到這樣的困境時,有一個救星出現了-pseudo code(中文是虛擬碼)

5.甚麼是pseudo code? 簡單來說他用來表達演算法,而不拘泥於具體的實現(附上維基百科連結)

6.先寫出pseudo code,再來就是翻譯了!把pseudo code翻成code

我很喜歡這一個動作,我會拿起紙跟筆,開始寫、開始畫畫,把腦中的想法寫成文字,寫出一些中英夾雜的"邏輯",他們就是所謂的演算法,再把演算法一塊一塊的變成了code

接下來就是實戰練習們

印出1–100的奇數

fizzbuzz

fizzbuzz(解法一)

fizzbuzz(解法二)

順帶一提,fizzbuss的兩種解法,第二種解法應該是較優的,最大的原因是不需要知道全部的條件後再去做判斷,每一個條件是獨立的。
這個意思用一個假設來說明,假設題目再變個更複雜為:
如果被3整除印Fizz,如果被5整除印Buzz,如果被7整除印Python。

解法一的pseudo code:

解法二的pseudo code:

在這兩個解法上可以得知,當題目的條件越多後,判斷式的複雜度就會提高,而如果把每個條件當作獨立的,也獨立的去做判斷,當條件增加時複雜度不會變高,這樣的效能會比較好。

參考資料

簡單的 FizzBuzz 藏有 深度(google 面試題)

❤️感恩看到這裡的你,希望這篇文章有幫上你👏歡迎拍手給我鼓勵,我是甜不辣馬拉松,我們下次見

--

--

甜不辣馬拉松
甜不辣馬拉松

Written by 甜不辣馬拉松

幻想自己是貝多芬,可是敲打的卻是機械鍵盤

No responses yet