[問題] 數據結構與演算法的學習與coding習慣雜問

作者: souhang (lasomiredo)   2021-09-26 20:38:15
前言(廢話):
各位安安,
小弟之前有接觸過一咪咪autohotkey,因為最近找到了coding的樂趣,
開始透過youtube學習python,大概學到了用class建立對象與方法,
但一些很簡單的內置函數也都是看到別人用,才會知道有這東西。
在學習的過程中,我知道了leetcode這玩意,並在解題思路的幫助下,解出了第一題。
但到了第二題才發現,leetcode的入場門票是需要會數據結構與演算法,
這是我發文的主要原因。
以下問題:
1.數據結構與演算法資源推薦(中文偏好)
目前自己找到的資源,要嘛跟講得天書一樣難,
要嘛聽懂的卻又沒有code給我看實際到底長怎樣,有點難過
2.加强基礎的練習資源推薦
幫助手冊能教我如何使用,但如何運用或許就要透過刷題來學習了,
我知道leetcode和zerojudege,前者還不是我目前能面對的,
後者我也正在刷,只是想知道除了這些還有沒有其他推薦。
不限於刷題資源,教學文章、影片也可以(我覺得可以挑戰一下英文)
3.如何避免迴圈内的迴圈(for中for的改寫)
有時候會在for循環中再加入for循環,如果是一個兩個看起來還好,
但如果多起來的話,感覺邏輯上就會變得難釐清。
如果以下面的code來説的話),要如何避開或改善這個問題。
4.其他改善(同樣的code)
這部分像是註解、變數命名等等,因為沒參與過別人的開源項目,
也不知道怎麼做才是對其他開發人員友善,但又想早點培養習慣,
想來想去好像獻醜是最直接有效的改善方法,
如果在能力範圍內做得不夠好的話,希望各位能夠提點一下。
問完了,謝謝各位
這部分是code:
# 給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標
值 target 的那 兩個 整數,並返回它們的數組下標。
# 你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素在答案裡不能重複出
現。
# 你可以按任意順序返回答案。
class Solution:
def twoSum(self, nums: list[int], target: int) -> list[int]:
"""
功能:
從列表中找尋二者之和與目標值相同的數,返回他們在列表中的位置
作者: ddavid (謊言接線生)   2021-09-26 21:03:00
針對問題1跟2,特別是「聽懂的卻又沒有code給我看」這句,其實就是你根本的程式邏輯跟語言熟練度不夠的問題了。基本上應該要往「理解的概念就要能夠轉換為程式」前進就好像腦中的想法能轉換為英文講出口,才叫做會英文
作者: pmove (金疾檸檬)   2021-09-26 21:22:00
回第一個問題,我當時在學資料結構,書是使用C++當範例,其實資料結構沒有一定要用哪種語言實作,所以沒有一定要用Python來實作,個人建議學C/C++的資料結構,Python可以自行領悟回第三個問題,iterative 本身跟 recursive 可以互換,但是兩個for其實也還好回第二題(抱歉跳著回答),若是為了以後薪水著想,英文能力> 專業(硬體)知識 > coding能力,基本上,如果您英文新多益有900分以上,這輩子大概就不愁吃穿了。另外,程式語言請不要執著於Python, 在台灣都還是跟硬體較相關,薪水較高。回第四題,一般來說公司會訂coding style, 例如tab 要用4個space來取代,名稱要用匈牙利命名法 還是要用 駱駝命名法…
作者: Supershero (拉拉)   2021-09-26 22:35:00
有關第四點可以參考PEP8
作者: ck574b027 (荒圍!定厝!賊!妹!)   2021-09-26 23:07:00
leetcode有分難度吧,難的先跳過不用客氣
作者: aalexx (aalexx.S)   2021-09-27 01:48:00
基本功練好、觀念正確比較重要。不要禁不起誘惑只刷題練面試,不然大學資工系沒有存在的道理。python普遍上應該是snake命名+4空格,但還是看專案或公司,沒有硬性規定。風格上可以看pep8程式語言不是問題,選個舒服的入門就好。姿態正確了學新語言也是幾周的事(撇開fp)。
作者: Hsins (翔)   2021-09-27 13:52:00
多益 900 以上就不愁吃穿我怎麼沒感受到這件事...
作者: pmove (金疾檸檬)   2021-09-27 14:29:00
所以樓上沒死啊 XD不愁吃穿,最低限度來講,就是沒餓死沒凍死的意思 XD
作者: leolarrel (真.粽子無雙)   2021-09-27 17:42:00
沒有多益也沒關係,洗個四大文組就能當碼農了還有我第一次看到不愁吃穿是這樣解釋的,真神人!
作者: pmove (金疾檸檬)   2021-09-27 20:27:00
咳咳,英文強到一個程度,在業界真的有很大的好處,至少可以到普遍福利比較好的外商。
作者: s0914714 (YA)   2021-09-27 22:12:00
英文好對找資料很有用 而且也有利進外商 非常值得投資
作者: sherees (ShaunTheSheep)   2021-09-28 01:14:00
近期收到夯特給的JD 必須英文溝通的團隊年薪多約20~30萬而且都是在台灣的遠端缺回一下原PO 1.leetcode的話看討論區 會說是用什麼演算法跟資料結構 有名詞再去google2.跟著專案練習3.不一定是需要避免的 重點是可讀性跟效率4.我之前是參考google python coding style 但重點還是跟團隊配合 通常沒有一定 但好的命名通常需要有良好的英文書寫能力 這部分也可以參考軟體版之前關於命名的討論[心得][英文] 如何命名... 系列文另外註解建議用英文 開源社群不是只有華人
作者: GTR12534 (カラス)   2021-09-28 08:28:00
阿這不就是第一題嗎?我有看過一個做法是另外做一個 list 出來,裡面放的是原本給的 list 跟 target 的差,因為題目限制的關係,新舊 list 只有一個重複的。類似這樣去最佳化算法。
作者: ddavid (謊言接線生)   2021-09-28 13:12:00
呃,英文學好有好處是沒錯,但把不愁吃穿這樣解的,問題可能在中文啊XDDD底層DS跟演算法確實從C/C++之類的找資源會比較多,Python說真的因為script語言易用的取向,相對不會去重刻底層基礎DS了,都拿寫好的用較多。當然要用得好或必要時動手改,基礎還是得打好的。
作者: mantour (朱子)   2021-09-29 18:07:00
演算法有時候會用虛擬碼描述,你自己要培養把虛擬碼寫成可以跑的程式的功力
作者: pmove (金疾檸檬)   2021-10-02 20:19:00
所謂食衣住行,之所以不說不愁住行,住指的是買房子,行指的是買車子,這些都很花錢。而不愁吃穿,指的並不是財富自由。撇開最低限度,不餓死不凍死。吃在古代是久久才吃肉,你有辦法餐餐吃肉,基本上是不愁吃了。穿在古代長袍馬褂就要穿很久,壞了也只能修修補補,不會買新衣服,你有夠多的衣服,基本上是不愁穿了。依這個標準,台灣很多人是不愁吃穿的…不過考試的話,不愁吃穿,有可能是財富自由的意思 XD
作者: b10007034 (Warren)   2021-10-18 16:40:00
現在要改成不愁房車了吧不愁房房更好
作者: Schottky (順風相送)   2021-10-18 17:20:00
沒想到在 Python 板可以看到各種不同語言的討論

Links booklink

Contact Us: admin [ a t ] ucptt.com